use strict; use warnings; my ($k1, $k2, %foo, %bar); %foo = ( 'a' => { 'x' => 1, 'y' => 3 }, 'b' => { 'x' => 4, 'y' => 4 } ); %bar = ( 'a' => { 'x' => 1, 'y' => 2 }, 'b' => { 'x' => 3, 'y' => 4 } ); for $k1 (sort keys %foo) { for $k2 (sort keys %{$foo{$k1}}) { print "\$foo{$k1}{$k2} eq \$bar{$k1}{$k2} with value $foo{$k1}{$k2}\n" if $foo{$k1}{$k2} eq $bar{$k1}{$k2}; } }