我正在尝试bp_genbank2gff3.pl
从另一个以 genbank 作为参数的 perl 脚本运行(bioperl 包)。
这不起作用(不生成输出文件):
my $command = "bp_genbank2gff3.pl -y -o /tmp $ARGV[0]";
open( my $command_out, "-|", $command );
close $command_out;
但这确实
open( my $command_out, "-|", $command );
sleep 3; # why do I need to sleep?
close $command_out;
为什么?
我认为close
应该阻止,直到命令完成:
关闭任何管道文件句柄会导致父进程等待子进程完成......(参见http://perldoc.perl.org/functions/open.html)。
编辑
我将其添加为最后一行:
say "ret=$ret, \$?=$?, \$!=$!";
在这两种情况下,打印输出都是:
ret=, $?=13, $!=
(这意味着close
在这两种情况下都失败了,对吧?)