J'ai le code Perl suivant:Perl tampon d'impression flush
STDOUT->autoflush(1);
foreach(...)
{
...
foreach(...)
{
print("Processing $folder");
$|=1;
process($folder);
}
...
}
mais l'instruction d'impression ne fonctionne que dans la première itération de la boucle et n'imprime rien après. Une idée pourquoi?
EDIT: J'ai trouvé la raison et je l'ai ajouté dans la réponse. La solution était:
I a ajouté la ligne suivante dans la boucle et cela a fonctionné:
select STDOUT;
Je pense que le code dans la fonction process() aurait dû modifier le tampon de sortie par défaut. C'était un code écrit par quelqu'un d'autre!
Je ne sais pas si cela est un problème avec Perl qui permet ceci ou le développeur qui n'a pas changé en arrière par défaut.
Le code final ressemblait à ceci:
foreach(...) { ... foreach(...) { select STDOUT; print("Processing $folder"); $|=1; process($folder); } ... }
Merci à tous ...
Etes-vous sûr qu'il ya plus qu'une itération? – innaM
ouais il y a plus d'une itération. J'ai essayé d'ajouter une déclaration d'avertissement et elle était imprimée plusieurs fois. – Manoj
a trouvé le problème. S'il vous plaît voir ma réponse ci-dessous. – Manoj