私は正常に使用しています IO::Tee
メッセージをstdoutとログファイルの両方に出力します。私はまた、stdoutとstderrをsystem()コマンドから同じファイルにキャプチャしてteeしたいと思っています。 perlでは、system()がvalを返すためにstdoutとファイルに出力する方法を教えてください。
簡単なスクリプト数コメントアウト失敗witha ...
#!/usr/bin/env perl
use IO:Tee;
my $teelog = "tee.log"
open my $tee, ">", $teelog or die "open tee failed.\n";
my $tee = new IO:Tee(\*STDOUT, $tee);
print $tee "First line in log\n";
# This command should work. I want the date to go to screen and tee.log
#system("date | tee -a ${teelog}"); <- nothing goes to tee.log
#system("date >& ${teelog}") <- clobbers tee.log
#system("date >& $tee") <- generates syntax errors
# This command should fail. I want error msg to go to screen and tee.log
#system("jibberish | tee -a ${teelog}"); <- nothing goes to tee.log
#system("jibberish >& ${teelog}") <- clobbers tee.log
system("kibberish >& $tee") <- generates syntax errors
print $tee "Last line in log\n";
exit;
'$'は '$ system'の入力ミスですか? – toolic