Ich habe Perl-Skript, das ich in Windows ausgeführt werde. In dem Skript rufe ich einen anderen Perl-Scrip auf. Ich versuche, beide Skripte zum Drucken in das Cmd-Fenster und eine Datei zu bekommen. Dieser im Grunde, wie ich den AnrufDrucken von Nachrichten auf dem Bildschirm und eine Datei
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";
Das zweite Skript tue, ist im Grunde
# do stuff
print "script 2 log about stuff";
# do more stuff
print "script 2 log about more stuff";
print "script 2 done";
Dies alles auf den Bildschirm und eine Datei. Ich sehe jedoch nicht, dass "script 2 über stuff", "script 2 log über mehr stuff" und "script 2 done" erst nach Skript 2 beendet wird. Ich würde gerne den gesamten Stream auf dem Bildschirm und der Datei sehen, sobald der Druck erreicht ist.
Versuchen Sie, die Ausgabepufferung im zweiten Skript zu deaktivieren. '$ | = 1'; –