A resposta fornecida pelo mtak é muito simples. Ele pode ser facilmente modificado para passar mais de um nome de arquivo, mas existe um sistema que depende do número de argumentos da linha de comando.
Se você preferir resposta ajustada para desempenho para enorme número de arquivos então você pode alimentar lista de arquivos via pipe entre bash (processo pai ) e perl (processo filho).
Evita iniciar o interpretador perl muitas vezes e atingir limites no número de argumentos da linha de comando.
script bash:
for i in *.fasta ; do
echo $i
done | perl script.pl
script perl
while (<STDIN>) {
# get file name
chomp;
my $file = $_;
# process file named $file
open (my $FILE,'<', $file) or die "Can't open: $!";
my @file = <$FILE>;
close $FILE;
print @file;
}