for my $k (keys(%hash1)) { next if !exists($hash2{$k}); my $v = join_values( delete($hash1{$k}), delete($hash2{$k}) ); print "$k-->$v\n"; } print("Leftovers in hash 1:\n"); print "$_\n" for keys(%hash1); print("Leftovers in hash 2:\n"); print "$_\n" for keys(%hash2);