在 perl 中使用命令行参数作为文件名
Using command line argument as a file name in perl
以下 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
-------------------------------------
我该如何解决?
您的程序正在尝试从该文件读取,但失败了,因为它不存在
您在 github 上的示例代码有这个
-file => '>chrom20.fasta'
所以我建议你试试
-file => ">$str"
或者您可以运行您的程序
perl test.pl >polg
此外,对于包含输出文件名的标量变量,我相信您能想到一个比 $str
更好的名称。 $str
仅略高于 $var
以下 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
-------------------------------------
我该如何解决?
您的程序正在尝试从该文件读取,但失败了,因为它不存在
您在 github 上的示例代码有这个
-file => '>chrom20.fasta'
所以我建议你试试
-file => ">$str"
或者您可以运行您的程序
perl test.pl >polg
此外,对于包含输出文件名的标量变量,我相信您能想到一个比 $str
更好的名称。 $str
仅略高于 $var