for my $k1 ( keys %foo ) { next if not defined $bar{ $k1 }; for my $k2 ( keys %{ $foo{ $k1 } } ) { next if not defined $bar{ $k1 }{ $k2 }; dance() if $foo{ $k1 }{ $k2 } eq $bar{ $k1 }{ $k2 }; } } #### for my $k1 ( grep defined $h2{ $_ }, keys %h1 ) { for my $k2 ( grep defined $h2{ $k1 }{ $_ }, keys %{ $h1{ $k1 } } ) { dance() if $h1{ $k1 }{ $k2 } eq $h2{ $k1 }{ $k2 }; } }