fig13_11.pl

来自「PERL语言资料 可以用于PERL程序设计」· PL 代码 · 共 86 行

PL
86
字号
#!/usr/bin/perl
# Figure 13.11: fig13_11.pl
# Using ref inside a function

use strict;
use warnings;

my @array1 = ( "This","is","the","first","array." );
my @array2 = ( "This","is","the","second","array." );
my %hash = ( Tarzan   => "Jane",
             Superman => "Lois Lane",
             Batman   => "Catwoman", );
my $array3 = [ "anonymous", [ "array", "in", "an", "array" ],
               { "plus" => "a",
                 "hash" => "in",
               },
               "as", "well" ];
  
printStructures( 5, \@array1, \%hash, \@array2, $array3);

sub printStructures 
{
   my $indent = shift();
   
   foreach my $element ( @_ ) {

      unless ( ref( $element ) ) {
         print( ' ' x $indent, $element, "\n" );
      }
      elsif ( ref( $element ) eq 'SCALAR' ) {
         print( ' ' x $indent, $element, "\n" );
      }
      elsif ( ref( $element ) eq 'ARRAY' ) {

         foreach ( 0 .. $#$element ) {
            print( ' ' x $indent, "[ $_ ] " );

            if ( ref( $element->[ $_ ] ) ) {
               print( "\n" );
               printStructures( $indent + 3, $element->[ $_ ] );
            }
            else {
               print( "$element->[ $_ ]\n" );
            }
         }
      }
      elsif ( ref( $element ) eq 'HASH' ) {

         foreach my $key ( keys( %$element ) ) {
            print( ' ' x $indent, $key, ' => ' );

            if ( ref ( $element->{ $key } ) ) {
               print( "\n" );
               printStructures( $indent + 3, $element->{ $key } );
            }
            else {
               print( "$element->{ $key }\n" );
            }
         }
      }
      elsif ( ref( $element ) eq 'CODE' ) {
         print( ' ' x $indent, "CODE\n" );
      }
      elsif ( ref( $element ) eq 'GLOB' ) {
         print( ' ' x $indent, "GLOB\n" );
      }
      
      print( "\n" );
   }
}


###########################################################################
#  (C) Copyright 2001 by Deitel & Associates, Inc. and Prentice Hall.     #
#  All Rights Reserved.                                                   #
#                                                                         #
#  DISCLAIMER: The authors and publisher of this book have used their     #
#  best efforts in preparing the book. These efforts include the          #
#  development, research, and testing of the theories and programs        #
#  to determine their effectiveness. The authors and publisher make       #
#  no warranty of any kind, expressed or implied, with regard to these    #
#  programs or to the documentation contained in these books. The authors #
#  and publisher shall not be liable in any event for incidental or       #
#  consequential damages in connection with, or arising out of, the       #
#  furnishing, performance, or use of these programs.                     #
###########################################################################

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?