6

perl からいくつかのシェル コマンドを呼び出す必要があります。これらのコマンドは完了するまでにかなりの時間がかかるため、完了を待っている間に出力を確認したいと思います。

システム関数は、完了するまで何も出力しません。

exec関数は出力を提供します。ただし、その時点から perl スクリプトを終了します。これは私が望んでいたことではありません。

私はWindowsを使用しています。これを達成する方法はありますか?

4

1 に答える 1

17

バックティックまたは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;
于 2010-12-14T20:14:24.620 に答える