my @array1 =( 1, 3, 6, 8); my @array2 =( 1, 2, 3, 4, 4); my @array3 =( 1, 2, 3, 5, 6); my %present; my @arrays = ( \@array1, \@array2, \@array3); for my $i ( 0 .. @arrays - 1) { $present{ $_ }{ $i } = 1 for @{ $arrays[ $i ] }; } my @only_two = grep { 2 == scalar keys %{$present{ $_ }} } keys %present; print "@only_two\n";