in reply to array of hash arrays, right?

It's not clear what you want, but the following may give you some interesting ideas:

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"; } }

Prints:

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

DWIM is Perl's answer to Gödel