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
、どちらの場合も失敗しましたよね?)