perl からいくつかのシェル コマンドを呼び出す必要があります。これらのコマンドは完了するまでにかなりの時間がかかるため、完了を待っている間に出力を確認したいと思います。
システム関数は、完了するまで何も出力しません。
exec関数は出力を提供します。ただし、その時点から perl スクリプトを終了します。これは私が望んでいたことではありません。
私はWindowsを使用しています。これを達成する方法はありますか?
perl からいくつかのシェル コマンドを呼び出す必要があります。これらのコマンドは完了するまでにかなりの時間がかかるため、完了を待っている間に出力を確認したいと思います。
システム関数は、完了するまで何も出力しません。
exec関数は出力を提供します。ただし、その時点から perl スクリプトを終了します。これは私が望んでいたことではありません。
私はWindowsを使用しています。これを達成する方法はありますか?
バックティックまたはqx
コマンドは、別のプロセスでコマンドを実行し、出力を返します。
print `$command`;
print qx($command);
中間出力を見たい場合は、 を使用open
してコマンドの出力ストリームへのハンドルを作成し、そこから読み取ります。
open my $cmd_fh, "$command |"; # <--- | at end means to make command
# output available to the handle
while (<$cmd_fh>) {
print "A line of output from the command is: $_";
}
close $cmd_fh;