use strict; my $name = 'test'; my %test; push @{$test{"$name"}}, { name => 'me',age => 'here' }; push @{$test{"$name"}}, { name => 'meAgain',age => 'Nowhere' }; push @{$test{"two"}}, { name => 'you',age => 'there' }; push @{$test{"two"}}, { name => 'AndYou',age => 'AndThere' }; my ($s,$u,$n); foreach $s (keys %test) { foreach $u ( @{$test{$s}} ) { foreach $n (keys %{$test{$s}[$u]}) { print "$s $u $n: $test{$s}[$u]{$n} - \n"; } } }