私はWindowsで実行しているperlスクリプトを持っています。スクリプトでは別のperlスクリプトを呼び出します。私はこれらのスクリプトを両方ともcmdウィンドウとファイルに出力しようとしています。この基本的にはどのように私は、コール画面とファイルへのメッセージの印刷
using IO::Tee
open (my $file, '>>', "C:\\Logs\\logfile.txt") or die "couldn't open log file: $!";
me $tee = IO::Tee->new(\*STDOUT, $file);
# doing some stuff
print $tee "log about what i just did";
# do more stuff
print $tee "more logs";
print $tee `c:\\secondScript.pl arg1`;
print $tee "done with script";
をやっている2番目のスクリプトは、基本的に
# do stuff
print "script 2 log about stuff";
# do more stuff
print "script 2 log about more stuff";
print "script 2 done";
これは画面にすべてとファイルを取得しています。しかし、スクリプト2が終了するまで、「スクリプト2のログ」、「スクリプト2のログの詳細」、「スクリプト2の完了」は表示されません。プリントに達するとすぐに、そのストリームのすべてを画面とファイルに表示したいと思います。 STDOUTへ
2番目のスクリプトで出力バッファリングをオフにしてみます。 '$ | = 1; –