my $numArrays = keys %ids; my %count = (); my @intersection = (); foreach my $k (keys %ids) { my %uniq = map { $_ => 1 } @{ $ids{$k} }; $count[$_]++ for keys %uniq; } foreach my $v (keys %count) { push @intersection, $v if $count[$v] == $numArrays; }