作者akillerbear (我是歹人雄大)
看板perl
标题Re: [问题] 之前问过的程式加了新条件~~
时间Tue Oct 31 23:27:56 2006
上面是小弟之前问过的问题~~
就是在每个"//"为结尾的档案做切割输出
後来因为这样输出後档案太多了,一个gbvrl1.seq就可以输出7万多笔
如此一来我若是先输出再把我要的档案去grep出来就太费时了
所以我想说能在文件档中"ORGANISM"栏位里有提及的名称如"Enterovirus"等
才作输出如此一来就可以节省不少时间了
请问有比较好的做法吗~~THX
小弟自解一下阿~~
/////////////////////////
#!/usr/bin/perl
#serch and find what I want
use strict;
my $content;
my $accession;
my $record;
my $q;
my $REPORT_FILE = "report.txt";
my $fasta_file = $ARGV[0] || 'gbvrl1.seq';
unless ( -e $fasta_file ) {
die "$0: ERROR: missing file: $fasta_file";
}
open( IN, $fasta_file ) or die "$0: ERROR: $fasta_file: $!";
while (<IN>) {
$content .= $_;
}
close(IN);
my @records=split("//",$content);
foreach $record (@records) {
@e=split "\n", $record;
my $towrite=0;
foreach $q (@e) {
$accession = $1 if ( $q =~ /^ACCESSION\s+(\S+)/ );
if ( $q =~/^ORGANISM\s+(\S+)/ && $1 =~/enterovirus/) { $towrite=1; last; }
}
if ($towrite == 1 ) {
open OUT, "> $accession";
print OUT $record;
print OUT "//\n"; ## put // back
close OUT;
# print $p;
}
}
/////////////////////////////////
可是执行後会有
Global symbol "@e" requires explicit package name at fi.pl line 28.
Global symbol "@e" requires explicit package name at fi.pl line 30.
Execution of fi.pl aborted due to compilation errors.
我这个有定义过了啊@@ 真奇怪~~~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.25.118.131
1F:→ knep:my @e=split "\n", $record; 11/01 01:21
2F:→ akillerbear:嗯嗯~~感谢回应~~~ 11/01 23:12
3F:→ akillerbear:错误讯息解决了~~可是程式执行完後完全没档案产生@@ 11/01 23:12