for my $target (@Accession) { } #### my @found = grep /$match/, @GI; #### use strict; use warnings; use Data::Dumper; my @GI = ( 'gi|Q384722390|emb|WP_938420210.1|Gene name', 'gi|342546780|emb|WP_934203412.1|Gene name', ); my @Accession = ( 'WP_938420210.1', 'WP_934203412.1' ); for my $match (@Accession) { my @found = grep /$match/, @GI; print "$match\n", Dumper [ split /\|/, $_ ] for @found; } #### use strict; use warnings; use Data::Dumper; my @genes = ( 'gi|Q384722390|emb|WP_938420210.1|Gene name', 'gi|342546780|emb|WP_934203412.1|Gene name', ); my @accession = ( 'WP_938420210.1', 'WP_934203412.1' ); my %genes = map { my @s = split /\|/, $_; ( $s[3] => [@s] ); } @genes; print Dumper \%genes; # list the 2nd field from each gene for (@accession) { print $genes{$_}[1], $/; }