Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 要输出的系统命令出错_Perl_Command_System_Output - Fatal编程技术网

Perl 要输出的系统命令出错

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) 脚

我想通过perl在输入文件的循环中运行ext软件(hmmer)命令(在linux中)

我用这条线

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";