Поиск текста в файле с помощью программы perl - PullRequest
2 голосов
/ 14 апреля 2020

У меня есть файл, указанный ниже:

>AAF88103.1 zinc finger protein 226 [Homo sapiens]
MNMFKEAVTFKDVAVAFTEEELGLLGPAXRKLYRDVMVENFRNLLSVGHPPFKQDVSPIERNEQLWIMTT
ATRRQGNLGEKNQSKLITVQDRESEEELSCWQIWQQIANDLTRCQDSMINNSQCHKQGDFPYQVGTELSI
QISEDENYIVNKADGPNNTGNPEFPILRTQDSWRKTFLTESQRLNRDQQISIKNKLCQCKKGVDPIGWIS
HHDGHRVHKSEKSYRPNDYEKDNMKILTFDHNSMIHTGQKSYQCNECKKPFSDLSSFDLHQQLQSGEKSL
TCVERGKGFCYSPVLPVHQKVHVGEKLKCDECGKEFSQGAHLQTHQKVHVIEKPYKCKQCGKGFSRRSAL
NVHCKVHTAEKPYNCEECGRAFSQASHLQDHQRLHTGEKPFKCDACGKSFSRNSHLQSHQRVHTGEKPYK
CEECGKGFICSSNLYIHQRVHTGEKPYKCEECGKGFSRPSSLQAHQGVHTGEKSYICTVCGKGFTLSSNL
QAHQRVHTGEKPYKCNECGKSFRRNSHYQVHLVVHTGEKPYKCEICGKGFSQSSYLQIHQKAHSIEKPFK
CEECGQGFNQSSRLQIHQLIHTGEKPYKCEECGKGFSRRADLKIHCRIHTGEKPYNCEECGKVFRQASNL
LAHQRVHSGEKPFKCEECGKSFGRSAHLQAHQKVHTGDKPYKCDECGKGFKWSLNLDMHQRVHTGEKPYK
CGECGKYFSQASSLQLHQSVHTGEKPYKCDVCGKVFSRSSQLQSHQRVHTGEKPYKCEICGKSFSWRSNL
TVHHRIHVGDKSYKSNRGGKNIRESTQEKKSIK.

В этом файле я пытаюсь найти последовательность, например: CDECGKEFSQGAHLQTHQKVH Мне нужно жестко закодировать этот шаблон в программе, а затем поищите его, мой код выглядит следующим образом:

    open FILE1, "file.fasta" or die;

while (my $line= <FILE1>) {

chomp $line;

}

if ($line =~ /CDECGKEFSQGAHLQTHQKVH/) {
    print "The protein contains the domain";
}else{
    print "The protein doesn't contain the domain";
}

Теперь этот шаблон встречается в последовательности, но я всегда получаю сообщение «Белок не содержит домен». Я делаю это неправильно?

1 Ответ

3 голосов
/ 14 апреля 2020

Оценка $ line происходит за пределами l oop ... Попробуйте:

my $found = 0;
open(my $fh, '<', 'file.fasta') or die "Could not open file '$filename': $!";
while (my $line = <$fh>) {
    if ($line =~ /CDECGKEFSQGAHLQTHQKVH/) {
        $found = 1;
        last;
    }
}

if ($found == 1) {
    print "The protein contains the domain";
} else {
    print "The protein doesn't contain the domain";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...