【发布时间】:2014-01-21 14:50:22
【问题描述】:
我想通过 perl 在循环中为输入文件(在 linux 中)运行 ext 软件(hmmer)命令。
我用了这条线
system "hmmbuild $outfile $files";
其中 $outfile 是我的输出文件,而 $files 在我的输入文件中。 hmmbuild 是 ext 软件的命令。
当我运行程序时,它给了我输出文件 GLOB(0x1b94b220) 的错误代码。
谁能帮我解决我的错误以及如何纠正?
我也尝试了带有反引号和括号的 exec 命令。
这是我得到的确切输出消息。如何将结果打印到输出文件 ($outfile)?
sh: -c: line 0: syntax error near unexpected token `('
sh: -c: line 0: `hmmbuild --amino GLOB(0x11eb3220) aproNOG00001'
脚本放在这里..
#!/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";
【问题讨论】:
-
用您使用的语言标记您的问题,在这种情况下是 Perl。
-
另外,GLOB 不是错误代码,这是您的结果。您需要阅读文档和/或示例。
-
$outfile不是文件,而是变量。它的值不能是文件。这些可以在磁盘上找到。它可能应该是一个文件 name,但它似乎是一个文件 handle。 -
您可能使用
open使用$outfile作为文件句柄(第一个参数)。您的程序很可能需要$outfile中的文件名,而不是文件句柄。 -
明确地说,虽然它很可能需要一个文件名,但它绝对不需要文件句柄。除了字符串作为参数传递给程序是不可能的。
标签: perl command system output