2

いくつかのコマンドを実行するためにperlback-ticks構文を使用しています。コマンドの出力をファイルに書き込んだり、stdoutに出力したりしたいのですが。バックティックされた文字列の最後にaを追加することで最初のことを達成でき>ますが、出力が生成されたらすぐに出力するようにするのがホットかどうかはわかりません。私が何かをするなら

print `command`; 

出力は、command実行が終了した後にのみ出力されます。

ありがとう、デイブ

4

1 に答える 1

8

バックティックは実行が終了したときにのみPerlプログラムに戻るため、バックティックを使用してこれを行うことはできません。

それで、

print  `command1; command2; command3`;

command3が何かを出力し終えるまで待ちます。

すぐに出力を取得できるようにするには、バックティックの代わりにパイプを使用する必要があります。

open (my $cmds, "-|", "command1; command2; command3");
while (<$cmds>) {
        print;
}
close $cmds;

これを行った後、バッファリングが必要かどうかを確認する必要があります(出力の即時性に応じて):バッファリングに苦しんでいますか?

出力を印刷して保存するには、ファイルをopen()して出力を書き込みます。

open (my $cmds, "-|", "command1; command2; command3");
open (my $outfile, ">", "file.txt");
while (<$cmds>) {
        print;
        print $outfile $_;
}
close $cmds;
close $outfile;
于 2010-07-31T11:37:50.433 に答える