以下perl脚本从命令行获取一个参数,并将其用作输出文件名。
my $str = $ARGV[0];
my $out_handler= Bio::SeqIO->new(
-file => $str,
-format => 'Fasta'
);
它类似于example。当我运行perl test.pl polg
时,我收到此错误
------------- EXCEPTION -------------
MSG: Could not read file 'polg': No such file or directory
STACK Bio::Root::IO::_initialize_io /opt/perl/lib/site_perl/5.14.2/Bio/Root/IO.pm:268
STACK Bio::SeqIO::_initialize /opt/perl/lib/site_perl/5.14.2/Bio/SeqIO.pm:513
STACK Bio::SeqIO::fasta::_initialize /opt/perl/lib/site_perl/5.14.2/Bio/SeqIO/fasta.pm:87
STACK Bio::SeqIO::new /opt/perl/lib/site_perl/5.14.2/Bio/SeqIO.pm:389
STACK Bio::SeqIO::new /opt/perl/lib/site_perl/5.14.2/Bio/SeqIO.pm:435
STACK toplevel test.pl:16
-------------------------------------
我该如何解决?
答案 0 :(得分:4)
您的程序正在尝试从该文件读取并因为它不存在而失败
你在github上的示例代码有这个
-file => '>chrom20.fasta'
所以我建议你试试
-file => ">$str"
或者您可以将程序作为
运行perl test.pl >polg
另外,对于包含输出文件名的标量变量,我确信您可以想到比$str
更好的名称。 $str
仅比$var