my %HoAncestors;my @intersection; foreach my $qu (keys %HoTxHits) { my $array_list;my $numb_taxids; # go through each taxid, get ancestors, then find the intersection foreach my $taxid (@{$HoTxHits{$qu}}){ $numb_taxids=scalar(@{$HoTxHits{$qu}}); my $queryTaxid=$taxid; while ((exists $HoPar{$queryTaxid}) && ($HoPar{$queryTaxid} != 1)) { my $parent=$HoPar{$queryTaxid}; push (@{$HoAncestors{$taxid}},$parent); $queryTaxid=$parent; } } my $lcm=List::Compare->new($HoAncestors{$taxid}[0]..$HoAncestors{$taxid}[$numb_taxids-1]); @intersection=$lcm->get_intersection; }