Я начинаю работать в Perl. У меня есть файл с именем file_IN.txt
, который содержит следующие строки:
SITE 1
/def="CODE:X22"
/pattern="BBAACCLLDDCC"
SITE 2
/def="CODE:X33".
/pattern="MMKKNNJJXXVV"
Я хочу напечатать все "шаблоны" (то есть BBAACCLLDDCC) в другом файле с именем file_OUT.txt
, принимая во внимание часть "def" (т.е. X22) в качестве заголовка:
Пример выходных данных:
>X22
BBAACCLLDDCC.
>X33
MMKKNNJJXXVV
Я попробовал следующий код:
#!/usr/bin/perl -w
use warnings;
if(!open(MY_HANDLE, "file_IN.txt")){
die "Cannot open the file";
}
@content = <MY_HANDLE>;
close(MY_HANDLE);
if(!open(WRITE_HANDLE, ">>file_OUT.txt")){
die "Cannot open the file";
}
foreach $row (@content){
if ($row =~ /def="([A-Z\/:A-Z]+)"/g){
$def = $1
}
if ($row =~ /pattern="([A-Z\s]+)"/){
$seqs = $1;
}
}
print(WRITE_HANDLE $seqs);
Проблемы с этим кодом, с которыми я столкнулся:
- Он печатает только последний шаблон в
file_OUT.txt
- Я не знаю, как последовательно печатать заголовок и шаблон для каждого сайта.