Итак, у меня есть программа, которая избавляет от лишних разрывов строк в файлах фаста, копируемых и вставляемых из Интернета.Если вы не знаете, как должен выглядеть файл fasta, он должен быть больше символа, за которым следует что-либо (обычно это информация заголовка), затем новая строка.Новая строка должна содержать вашу полную последовательность (для биологической ДНК или аминокислоты) в одной строке и повторяться.
В любом случае, проблема в том, что мне нужна программа, чтобы быть достаточно гибкой, чтобы справиться с чем-либо: \r
, \n
или \r\n
.Оператор chomp
с подчеркиванием с обеих сторон - это команда, которая удаляет лишние строки в части последовательности.Как я могу заставить этот chomp избавиться от всех трех опций (\r
, \n
, \r\n
)?Могу ли я установить $\ = @linefeeds
и иметь @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;
}
}
}
}