どうすれば出力をターミナルとファイルに同時に出力できますか?プログラムからの出力をコンソールとログファイルに同時にどのように送ることができますか?
$ perl foo.pl > foout.txt
私にはライブプロセスが表示されません。
出力プロセスをリアルタイムで確認し、最後にファイルの出力を得る方法はありますか?
どうすれば出力をターミナルとファイルに同時に出力できますか?プログラムからの出力をコンソールとログファイルに同時にどのように送ることができますか?
$ perl foo.pl > foout.txt
私にはライブプロセスが表示されません。
出力プロセスをリアルタイムで確認し、最後にファイルの出力を得る方法はありますか?
perl foo.pl |
tee
foout.txt
だから簡単!ありがとう。 – YoDar
この回答を受け入れるように質問を返信すると、これはPerlの質問ではありませんでした。 –
@Sinan:[perl]と[tee]のサイトを閲覧している人がどちらの方法でも見つけることができるので、[perl]タグを追加します。そして応答が明確になるので、それが利用可能であるならば 'tee'で、あるいはPerl自身の中で(おそらくもっと移植性を持たせるために)、それを使うことができます。 – Telemachus
IO::Teeを参照してください。このモジュールは、あなたのプログラム内できめ細かい制御を使ってこれを選択的に行うことを可能にします(File::Teeという成熟度の低いモジュールもありますが、深刻なプロジェクトではお勧めしません)。
Log4perlも参照してください。どこでどのようにログに記録されるのかを細かく制御できます。
他の人が推奨しているように、コマンドラインからの1回の使用については、アクセス可能であればもちろんコマンドラインユーティリティtee
を利用できます。
私はいつもIO :: Teeをこの種のものに使ってきました。あなたは両方の経験がある場合、どのようにそれらを比較しますか。 (私はFile :: Teeのドキュメントを見ていますが、入力があれば興味があります) – Telemachus
@Telemachus File :: Teeを使用することはめったになく、IO :: Teeを使用したことはありません両者の比較を行う位置。 File :: Teeは私が必要なときにうまく機能しました。一方、Log4perlは素晴らしいです。 –
@Sinan:十分に公正。私はFile :: Teeを見て自分自身を比較します。私はちょうど私が尋ねると思った。 – Telemachus
それとも、可能性があり、画面とログファイル(UNIXではないか、ティープログラムを持っている場合には)
perlのfoo.plに印刷するためのperlのプログラムにパイプを| PerlのmyPipe.pl MYFILE.TXT
データがMYFILE.TXTにcaptureedされ
myPipe.plは
#
open OUTFILE,">$ARGV[0]" or die "Unable to open file: $ARGV[0]\n";
while(<>)
{
print;
print OUTFILE;
}
close OUTFILE;
これはSTDINからの入力の行を読み取り、画面にそれを印刷している場合次にファイルに移動します。終了に達すると、ファイルを閉じます
heh。あなたは車輪を開発しました:) – Znik
あなたのプログラムでこれを行う必要がありますか、プログラムを実行するときにシェル機能を時々使用したいですか?後者の場合、質問は[perl]ではなく、使用しているシェルと環境でタグ付けされるべきです。 –