我是 perl 新手,想做一些我认为是对存储在 rtf 文件中的 DNA 序列的基本字符串操作。
本质上,我的文件读取(文件为 FASTA 格式):
>LM1
AAGTCTGACGGAGCAACGCCGCGTGTATGAAGAAGGTTTTCGGATCGTAA
AGTACTGTCCGTTAGAGAAGAACAAGGATAAGAGTAACTGCTTGTCCCTT
GACGGTATCTAACCAGAAAGCCACGGCTAACTACGTGCCAGCAGCCGCGG
TAATACGTAGGTGGCAAGCGTTGTCCGGATTTATTGGGCGTAAAGCGCGC
GCAGGCGGTCTTTTAAGTCTGATGTGAAAGCCCCCGGCTTAACCGGGGAG
GGTCATTGGAAACTGGAAGACTGGAGTGCAGAAGAGGAGAGTGGAATTCC
ACGTGTAGCGGTGAAATGCGTAGATATGTGGAGGAACACCAGTGGCGAAG
GCGACTCTCTGGTCTGTAACTGACGCTGAGGCGCGAAAGCGTGGGGAGCA
AACAGGATTAGATACCCTGGTAGTCCACGCCGT
我想做的是读入我的文件并打印标题(标题>LM1)然后匹配以下DNA序列GTGCCAGCAGCCGC
,然后打印前面的DNA序列。
所以我的输出看起来像这样:
>LM1
AAGTCTGACGGAGCAACGCCGCGTGTATGAAGAAGGTTTTCGGATCGTAA
AGTACTGTCCGTTAGAGAAGAACAAGGATAAGAGTAACTGCTTGTCCCTT
GACGGTATCTAACCAGAAAGCCACGGCTAACTAC
我编写了以下程序:
#!/usr/bin/perl
use strict; use warnings;
open(FASTA, "<seq_V3_V6_130227.rtf") or die "The file could not be found.\n";
while(<FASTA>) {
chomp($_);
if ($_ =~ m/^>/ ) {
my $header = $_;
print "$header\n";
}
my $dna = <FASTA>;
if ($dna =~ /(.*?)GTGCCAGCAGCCGC/) {
print "$dna";
}
}
close(FASTA);
问题是我的程序逐行读取文件,我收到的输出如下:
>LM1
GACGGTATCTAACCAGAAAGCCACGGCTAACTAC
基本上我不知道如何将整个 DNA 序列分配给我的 $dna 变量,最终也不知道如何避免逐行读取 DNA 序列。我也收到此警告:在stacked.pl 第14 行第1113 行的模式匹配(m//)中使用未初始化的值$dna。
如果有人可以帮助我编写更好的代码或指出正确的方向,我将不胜感激。