use strict; use warnings; use Data::Dumper; my $temp = ... # your list of lists here my $numterms = @$temp; my $seen = {}; for my $term (@$temp) { map { $seen->{$_}++ } @$term; } my @results = grep {$seen->{$_} == $numterms} keys %$seen; print STDERR Data::Dumper->Dump([\@results]);