3

出力を端末とファイルに同時に出力するにはどうすればよいですか?

$ perl foo.pl > foout.txt

ライブプロセスを見ることができません。

出力プロセスをリアルタイムで確認し、最後に画面の出力をファイルに取得する方法はありますか?

4

4 に答える 4

17

perl foo.pl | tee foout.txt

于 2009-07-26T12:40:50.060 に答える
9

ユーティリティティーがそれを行います。

于 2009-07-26T12:40:42.493 に答える
7

IO::Teeを参照してください。このモジュールを使用すると、プログラム内できめ細かく制御して選択的にこれを行うことができます ( File::Teeと呼ばれる成熟度の低いモジュールもありますが、これは私にとっては一度機能しましたが、深刻なプロジェクトにはお勧めしません)。

何がどこでどのようにログに記録されるかを細かく制御するには、Log4perlも参照してください。

他の人が推奨しているように、コマンドラインからの1回限りの使用については、もちろん、teeアクセスできる場合はコマンドラインユーティリティを利用できます.

于 2009-07-26T12:41:13.647 に答える
0

または、それを perl プログラムにパイプして、画面とログ ファイルに出力することもできます (つまり、Unix を使用していないか、tee プログラムを使用している場合)。

perl foo.pl | perl myPipe.pl myFile.txt

データが myFile.txt にキャプチャされ、

myPipe.pl は

#
open OUTFILE,">$ARGV[0]" or die "Unable to open file: $ARGV[0]\n";

while(<>)
{
    print;
    print OUTFILE;
}
close OUTFILE;

これは、STDIN から入力行を読み取り、それを画面に出力してからファイルに出力します。最後に到達すると、ファイルを閉じます

于 2009-07-27T04:21:58.067 に答える