my @a1 = qw(1 2 5 9 11 12 13); my @a2 = qw(1 2 5 11 12 13); my @a3 = qw(1 2 5 7 9 12 13); my @shared = shared(\@a1, \@a2, \@a3); sub shared { my $lim = scalar(@_); my @lists = map{@{$_}}@_; return do{my %seen; $seen{$_}++ for(@lists); map{delete $seen{$_} if($seen{$_} == 1 || $seen{$_} == $lim)}keys %seen; sort {$a <=> $b} keys %seen; }; } #### 9 11