?? fig13_11.pl
字號:
#!/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 + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -