在perl

时间:2017-06-30 12:13:12

标签: perl file bioperl

以下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
-------------------------------------

我该如何解决?

1 个答案:

答案 0 :(得分:4)

您的程序正在尝试从该文件读取并因为它不存在而失败

你在github上的示例代码有这个

-file => '>chrom20.fasta'

所以我建议你试试

-file => ">$str"

或者您可以将程序作为

运行
perl test.pl >polg

另外,对于包含输出文件名的标量变量,我确信您可以想到比$str更好的名称。 $str仅比$var

略好一些