use warnings; use strict; use feature 'say'; my $h = {a=>1, b=>2, c=>3, d=>4}; for my $k1 (keys %$h) { my $v1 = $h->{$k1}; say "external $k1 => $v1"; while ( my ($k2, $v2) = each %$h ) { say " internal $k2 => $v2"; } }