2013-02-17 87 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"; 
}