- 论坛徽章:
- 0
|
#!/usr/bin/perl -w
use strict;
my $hash = {
'ab' => {
'123' => [ 2222, 3333 ],
'234' => [ 4444, 5555 ],
'345' => [ 6666, 7777 ],
'456' => [ 8888, 9999 ],
},
'cd' => {
'123' => [ 1111, 5433 ],
'234' => [ 4444, 6543 ],
'345' => [ 6666, 2345 ],
'456' => [ 6321, 9999, 2222 ],
},
'ef' => {
'123' => [ 3333, 1000 ],
'234' => [ 1111, 5555 ],
'345' => [ 6666, 2222 ],
'456' => [ 8888, 1111 ]
},
};
my (@dumper,%already_seen);
sub pretty_print {
my $var;
foreach $var (@_) {
if ( ref($var) ) {
print_ref($var);
}
else {
print_scalar($var);
}
}
}
sub print_scalar {
dumper_( $_[0] );
}
sub print_ref {
my $r = shift;
if ( exists( $already_seen{$r} ) ) {
return;
}
else {
$already_seen{$r} = 1;
}
my $ref_type = ref($r);
if ( $ref_type eq "ARRAY" ) {
print_array($r);
}
elsif ( $ref_type eq "SCALAR" ) {
print_scalar($$r);
}
elsif ( $ref_type eq "HASH" ) {
print_hash($r);
}
elsif ( $ref_type eq "REF" ) {
print_ref($$r);
}
else {
print "$ref_type (not supported)";
}
}
sub print_array {
my ($r_array) = @_;
foreach my $var (@$r_array) {
if ( ref($var) ) {
print_ref($var);
}
else {
dumper_($var);
}
}
}
sub print_hash {
my ($r_hash) = @_;
my $key;
foreach $key ( sort keys %$r_hash ) {
my $val = $$r_hash{$key};
$val = ( $val ? $val : '""' );
if ( ref($val) ) {
print_ref($val);
}
else {
dumper_($val);
}
}
}
sub dumper_ {
push @dumper, $_[0];
}
pretty_print($hash);
print join ',', @dumper; |
|
|