for my $k ( keys %harry ) { my $a1 = $harry{$k}; my $a2 = $harry{$phash{$k}}; my %seen; ++$seen{$_} for @$a1, @$a2; @$a1 = grep $seen{$_}>1, @$a1; @$a2 = grep $seen{$_}>1, @$a2; }