Perl 要输出的系统命令出错
我想通过perl在输入文件的循环中运行ext软件(hmmer)命令(在linux中) 我用这条线Perl 要输出的系统命令出错,perl,command,system,output,Perl,Command,System,Output,我想通过perl在输入文件的循环中运行ext软件(hmmer)命令(在linux中) 我用这条线 system "hmmbuild $outfile $files"; 其中$outfile是我的输出文件,而$files是我的输入文件hmmbuild是ext软件的命令 当我运行该程序时,它会为输出文件GLOB(0x1b94b220)提供错误代码 有谁能帮我指出哪里错了,如何改正 我尝试了exec命令,也使用了反勾号和括号 这正是我得到的输出信息。如何将结果打印到输出文件($outfile) 脚
system "hmmbuild $outfile $files";
其中$outfile是我的输出文件,而$files是我的输入文件hmmbuild
是ext软件的命令
当我运行该程序时,它会为输出文件GLOB(0x1b94b220)提供错误代码
有谁能帮我指出哪里错了,如何改正
我尝试了exec命令,也使用了反勾号和括号
这正是我得到的输出信息。如何将结果打印到输出文件($outfile)
脚本在这里
#!/usr/bin/perl
use Bio::AlignIO;
use Bio::Align::AlignI;
my $allfiles= 'allfilenames_alpha_hmms.txt';
system "module load hmmer/3.1b1";
print "loaded hmmer\n";
open(FIH, $allfiles);
while ($min=<FIH>)
{ chomp($min); my @pats=split " ",$min;
foreach my $files(@pats) {
print $files; print "\n";
open(my $outfile, '>',"$prefix.hmm");
system "hmmbuild --amino $outfile $files";
print $outfile;
print "file saved\n";
# }
}
}
print "\n\n\n\t ###\tDONE\t### \n\n";
#/usr/bin/perl
使用Bio::AlignIO;
使用Bio::Align::AlignI;
my$allfiles='allfilenames_alpha_hmms.txt';
系统“模块负载hmmer/3.1b1”;
打印“已加载的hmmer\n”;
打开(FIH,$allfiles);
而($min=)
{chomp($min);my@pats=split”“$min;
foreach my$文件(@pats){
打印$文件;打印“\n”;
打开(我的$outfile,'>',“$prefix.hmm”);
系统“hmmbuild--amino$outfile$文件”;
打印$outfile;
打印“已保存文件\n”;
# }
}
}
打印“\n\n\t\t\t\t\t\t\t\t\n\n”;
如何将结果打印到输出文件($outfile)
我认为hmmbuild
需要一个文件路径?传递文件的路径,而不是$outfile
中的内容
system "hmmbuild --amino $prefix.hmm $files";
用您正在使用的语言(本例中为Perl)标记您的问题。此外,GLOB不是错误代码,这是您的结果。您需要阅读文档和/或示例。
$outfile
不是文件,而是变量。其值不能是文件。这些是在磁盘上找到的。它可能应该是一个文件名,但似乎是一个文件句柄。您可能使用open
使用$outfile
作为文件句柄(第一个参数)。您的程序很可能需要的是$outfile
中的文件名,而不是文件句柄。很明显,虽然它很可能需要文件名,但它肯定不需要文件句柄。除了字符串之外,无法将任何内容作为参数传递给程序。因此,请删除打开的,并更改为系统“hmmbuild--amino$prefix.hmm$files”代码>。。。除了$prefix
似乎没有定义之外。
system "hmmbuild --amino $prefix.hmm $files";