2013-02-17 82 views
0

在串聯或串在Convert1.pl使用未初始化值$Xentr4的第6行什麼是造成這些錯誤? (。)

我得到以下錯誤:

Error opening no such file or directory at Convert1.pl line 6"

#!/usr/bin/perl -w 
# This script takes a user specified interleaved fasta input file $ARGV[0] and converts it to a sequential fasta file 
use strict; 

my $Xentr4=$ARGV[0]; 
open(IN, "<$Xentr4") || die ("Error opening $Xentr4 $!"); 

my $line = <IN>; 
print $line; 

while ($line = <IN>) 
{ 
     chomp $line; 
     if ($line=~m/^>/) { 
       print "\n",$line,"\n"; 
       } 
     else { 
       print $line; 
       } 
} 
+0

太好了,解決了!下一個問題 - 將結果輸出到文件(而不是僅打印)的最佳方式是什麼? – Paul 2013-02-17 19:32:18

回答

2

該錯誤可能是未來的,因爲你不是傳遞任何命令行參數。而且,由於您正在使用第一個命令行參數初始化$Xentr4,因此在沒有任何參數的情況下它將保持未初始化狀態。

您需要將您的文件名作爲命令行參數傳遞給您的腳本。


除此之外,你應該使用3-arg開:

open (IN, "<", $Xentr4) or die ("Error opening $Xentr4 $!"); 
+0

謝謝!將第5行和第6行更改爲以下方式: my $ Xentr4 =「Xentr4.fasta」; open(IN,「<」,「$ Xentr4」)||死(「錯誤打開$ Xentr4 $!」); – Paul 2013-02-17 18:57:25

+0

@ user2081026。歡迎您:) – 2013-02-17 18:58:08

+0

@ user2081026。是的,現在你只是直接給你的文件名。沒關係。 – 2013-02-17 18:58:34

0

變量$Xentr4可能undeffilepath可能不正確。

爲了避免這些問題,您可以添加檢查。

if ((defined $Xentr4) && (-e $Xentr4)) { 
    open(IN, "<$Xentr4") || die ("Error opening $Xentr4 $!"); 
} else { 
    print "Check the Argument passed.\n"; 
}