Re: [問題] 之前問過的程式加了新條件~~
上面是小弟之前問過的問題~~
就是在每個"//"為結尾的檔案做切割輸出
後來因為這樣輸出後檔案太多了,一個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
→
11/01 01:21, , 1F
11/01 01:21, 1F
→
11/01 23:12, , 2F
11/01 23:12, 2F
→
11/01 23:12, , 3F
11/01 23:12, 3F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 4 之 5 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章