Re: [問題] 之前問過的程式加了新條件~~

看板Perl作者 (我是歹人雄大)時間18年前 (2006/10/31 23:22), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串4/5 (看更多)
上面是小弟之前問過的問題~~ 就是在每個"//"為結尾的檔案做切割輸出 後來因為這樣輸出後檔案太多了,一個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
my @e=split "\n", $record;
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
文章代碼(AID): #15HseZ3n (Perl)
文章代碼(AID): #15HseZ3n (Perl)