use strict; use warnings; my @ahoa=( {1=> ['A'=>1.1, 'B'=>10.1, 'C'=>100.1], 2=> ['A'=>2.1, 'B'=>20.1, 'C'=>200.1], 3=> ['A'=>3.1, 'B'=>30.1, 'C'=>300.1]}, {4=> ['A'=>4.1, 'B'=>40.1, 'C'=>400.1], 5=> ['A'=>5.1, 'B'=>50.1, 'C'=>500.1], 6=> ['A'=>6.1, 'B'=>60.1, 'C'=>600.1]}, {7=> ['A'=>7.1, 'B'=>70.1, 'C'=>700.1], 8=> ['A'=>8.1, 'B'=>80.1, 'C'=>800.1], 9=> ['A'=>9.1, 'B'=>90.1, 'C'=>900.1]}, ); print dumpRef(\@ahoa); sub dumpRef { my $ref = shift; if ('ARRAY' eq ref $ref) { my $str = ''; $str .= dumpRef ($_) for @$ref; return "$str\n"; } elsif ('HASH' eq ref $ref) { my $str = ''; $str .= " $_ => " . dumpRef ($ref->{$_}) for sort keys %$ref; return "$str\n"; } elsif (length ref $ref) { return 'Panic - got a ' . (ref $ref) . ' and can\'t deal with it.'; } else { return " $ref"; } }