Ich habe folgende Perl-Code:Perl drucken Pufferung bündig
STDOUT->autoflush(1);
foreach(...)
{
...
foreach(...)
{
print("Processing $folder");
$|=1;
process($folder);
}
...
}
aber die print-Anweisung funktioniert nur in der ersten Iteration der Schleife und druckt nicht alles danach. Irgendeine Idee warum?
EDIT: Ich habe den Grund gefunden und habe es in der Antwort auch hinzugefügt. Die Lösung war:
I addierten folgende Zeile innerhalb der Schleife und es funktionierte:
select STDOUT;
Ich denke, der Code in Prozess() -Funktion sollte den Standard Ausgabepuffer geändert haben. Es war ein Code geschrieben von jemand anderem!
Ich bin nicht sicher, ob dies ein Problem mit Perl ist die in dieser oder die Entwickler erlaubt, die es nicht zurück auf die Standardeinstellung ändern.
Der endgültige Code sah wie folgt aus:
foreach(...) { ... foreach(...) { select STDOUT; print("Processing $folder"); $|=1; process($folder); } ... }
Dank all ...
Bist Du sicher, dass es mehr ist als eine Iteration? – innaM
Ja, es gibt mehr als eine Iteration. Ich habe versucht, warnen Aussage hinzufügen und es wurde mehrmals gedruckt. – Manoj
das Problem gefunden. Bitte sehen Sie meine Antwort unten. – Manoj