У меня есть программа, которая избавляется от лишних разрывов строк в файлах fasta, копируемых и вставленных из Интернета. Если вы не знаете, как должен выглядеть файл fasta, он должен быть больше символа, за которым следует что-либо (обычно это информация о заголовке), а затем новая строка. Новая строка должна содержать вашу полную последовательность (для биологии ДНК или аминокислоты) в одной строке и повторять.Работа с одиночным возвратом каретки как символ конца строки
В любом случае проблема заключается в том, что программа должна быть достаточно гибкой, чтобы иметь дело с чем-либо: \r
, \n
, или \r\n
. Оператор chomp
с символами подчеркивания с обеих сторон - это команда, которая удаляет лишние строки в части последовательности. Как я могу заставить этот chomp избавиться от всех трех опций (\r
, \n
, \r\n
)? Могу ли я установить и есть @linefeeds = "\r", "\n", "\r\n";
?
Я читал онлайн, я знаю, что эта тема была рассмотрена ранее, но я просто не могу заставить ее работать.
Вот мой код, чтобы сделать это в файле:
print "Please enter file name, using the full pathway, to save your cleaned fasta file to:\n";
chomp($new_file = <STDIN>);
open(New_File, "+>$new_file") or die "Couldn't create file. Check permissions on location.\n";
#process the file line by line, chomping all lines that do not contain "greater than" and
#removing all white space from lines that do not contain "greater than"
my $firstline = 1;
while (my $lines = <FASTA>) {
foreach ($lines) {
if (!/>/) {
_chomp($lines);_
$lines =~ s/ //g;
print New_File "$lines";
} else {
if ($firstline == 1) {
print New_File "$lines";
$firstline = 0;
} else {
print New_File "\n$lines";
next;
}
}
}
}
Проблема с комментариями была 1) это была фактически вся одна строка (не было LF до второго #) и 2) она не была отступом 4 пробела. – cjm