my %triplet = map {($A1[$_] => [$B1[$_], $C1[$_], $D1[$_]]) } 0..$#triplet; my %doublet = map {($A2[$_] => [$D2[$_], $C2[$_]])}0..$#doublet; for (my $i=0; $i<@A2; $i++) { if (exists($triplet{$A2[$i]})) { print "$A2[$i]\n"; } else { } }