foreach my $key (keys %{$data->{blah}[$idx]{blih}}) { print "$key : $data->{blah}[$idx]{blih}{$key}\n"; } #### while (my ($key, $value) = each %{$data->{blah}[$idx]{blih}}) { print "$key : $value\n"; } #### foreach my $key (keys %{$data->{blah}[$idx]{blih}}) { my $value = $data->{blah}[$idx]{blih}{$key}; ... }