У меня есть пять файлов fasta в каталоге, которые я могу успешно разместить в массиве. Когда я пытаюсь открыть все файлы подряд через цикл foreach, для выполнения регулярного выражения для каждого файла, только первый файл в каталоге, похоже, открывается для обработки. Кроме того, когда я пытаюсь напечатать всю последовательность в первом файле (с помощью диагностического отчета о печати, который не показан), первая половина последовательности игнорируется. Печатается только последняя часть последовательности. Если кто-нибудь узнает о том, как преодолеть это, я был бы очень благодарен. Вот как выглядит мой код до сих пор.Цикл Foreach действует только на часть первого элемента в массиве
#!/usr/bin/perl
use warnings;
use strict;
use diagnostics;
my $dir = ("/Users/roblogan/Documents/FakeFastaFilesAgain");
my @TrimmedSequences;
my @ArrayofFiles = glob "$dir/*";
#print join("\n", @ArrayofFiles), "\n"; # this is a diagnostic test print statement
foreach my $file (@ArrayofFiles){
open (my $sequence, '<', $file) or die $!; # open each file in the array
while (my $line = <$sequence>) {
$line =~ s/\R//g; # get rid of new line breaks
if ($line =~ m/(CTCCCA)[TAGC]+(TCAGGA)/) { # search file contents
push(@TrimmedSequences, $line); # push the match into another array
close $file;
}
}
}
print join("\n", @TrimmedSequences), "\n";
'close $ file' не будет работать. – Sobrique