my %seen; my @intersection = grep ++$seen{$_}==2, @list1, @list2; #### my %seen; $seen{$_}=1 for @list1; my @intersection = grep ++$seen{$_}==2, @list2;