# my @non_unique_intersection = nonunique_intersect( \@temp, \@temp2 ); sub nonunique_intersect { my ($x, $y) = @_; my %count; $count{$_}++ for @$x; my @return = grep { $count{$_}-->0 } @$y; return wantarray ? @return : \@return; }