- 论坛徽章:
- 0
|
我想从文件A读取一行字符串去匹配文件B的每一行字符串,并计数
例:
文件A中: 文件B中:
aaaaaa >1
aaaaac atgcaatatgctgatgggccattgatgat........
atgcta >2
........ tttgatgctgatgctatgatagtcgtagt.......
>3
cccgatgatagtagattagatatgata......
>4
..........
用文件A中的第一个字符串去匹配文件B中的每一行字符串,并计数共匹配到多少行,然后再读取文件A的第二个字符串去匹配文件B的每一行,并计数,依此类推,我是这么写的
open(FILEA, "char.txt") || die;
open(FILEB, "seq.fasta") || die;
open(FILEC, ">obs_seq.txt") || die;
while($line=<FILEA>){
$num=0;
chomp($line);
while($seq=<FILEB>){
if($seq=~m/$line/i/g){
$num++;
}
}
print FILEC "$line: $num\n";
}
close(FILEA);
close(FILEB);
close(FILEC);
运行后只匹配了文件A的第一个字符串,就没有执行下去了,如第一个是"aaaaaa",就只能找到有"aaaaaa"序列,第二个"aaaaac"的就不找了,如下面的结果:
aaaaaa: 616
aaaaac: 0
aaaaag: 0
aaaaat: 0
aaaaca: 0
aaaacc: 0
aaaacg: 0
aaaact: 0
aaaaga: 0
...
...
请高手指点一下,是哪不对,应该怎么写.谢谢! |
|