我正在編寫一個讀取文件的簡短perl腳本。見tmp.txt
:Perl:名稱「main :: IN」只使用過一次,但實際使用的是
1 gene_id "XLOC_000001"; gene_name "DDX11L1"; oId
1 gene_id "XLOC_000001"; gene_name "DDX11L1"; oId
1 gene_id "XLOC_000001"; gene_name "DDX11L1"; oId
1 gene_id "XLOC_000001"; gene_name "DDX11L1"; oId
我的perl程序,convert.pl
是:
use warnings;
use strict;
use autodie; # die if io problem with file
my $line;
my ($xloc, $gene, $ens);
open (IN, "tmp.txt")
or die ("open 'tmp.txt' failed, $!\n");
while ($line = <IN>) {
($xloc, $gene) = ($line =~ /gene_id "([^"]+)".*gene_name "([^"]+)"/);
print("$xloc $gene\n");
}
close (IN)
or warn $! ? "ERROR 1" : "ERROR 2";
它輸出:
Name "main::IN" used only once: possible typo at ./convert.pl line 8.
XLOC_000001 DDX11L1
XLOC_000001 DDX11L1
XLOC_000001 DDX11L1
XLOC_000001 DDX11L1
我以前IN
,所以我不明白Name "main::IN" used...
警告。它爲什麼抱怨?
使用詞法變量和3 arg打開:'打開我的$ IN,'<','tmp.txt或死...' – Toto
'或者死亡...''是多餘的,因爲您正在使用'autodie' – Toto