use Bio::SeqIO; my $in = new Bio::SeqIO(-file => 'filename', -format => 'fasta'); my %seqs; my @idlist = qw(456-3210 4670-5490); while( my $seq = $in->next_seq ) { my $id = $seq->display_id; $id =~ s/gb\|//; $seqs{$id} = $seq; } my @seqlist = grep { defined } map { $seqs{$_} } @idlist;