Re: [問題] 之前問過的程式加了新條件~~
※ 引述《akillerbear (我是歹人雄大)》之銘言:
: 上面是小弟之前問過的問題~~
: 就是在每個"//"為結尾的檔案做切割輸出
: 後來因為這樣輸出後檔案太多了,一個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 給它呢 ?
: 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: 210.240.172.81
推
11/05 15:03, , 1F
11/05 15:03, 1F
→
11/05 15:04, , 2F
11/05 15:04, 2F
→
11/05 15:05, , 3F
11/05 15:05, 3F
→
11/05 15:05, , 4F
11/05 15:05, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 5 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章