Perl Impression de mise en mémoire tampon flush

J'ai le texte suivant du code Perl:

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 de ne pas imprimer quoi que ce soit après. Aucune idée pourquoi?

EDIT: j'ai trouvé la raison et de l'avoir ajouté dans la réponse aussi.
La solution était:

J'ai ajouté la ligne suivante à l'intérieur de la
boucle et il a travaillé:

sélectionnez sortie standard (STDOUT);

Je pense que le code dans le processus de() la fonction
doit avoir été la modification de la valeur par défaut
tampon de sortie. Il s'agit d'un code écrit
par quelqu'un d'autre!

Je ne suis pas sûr si c'est un problème
avec Perl qui permet ce ou de l'
développeur qui n'a pas le modifier
la valeur par défaut.

Le code final ressemblait à ceci:

foreach(...)
{
    ...

    foreach(...)
    {
        select STDOUT;

        print("Processing $folder");
        $|=1;
        process($folder);
    }
    ...
}

Merci à tous...

Êtes-vous sûr qu'il n'y a plus d'une itération?
ouais il y a plus d'une itération. J'ai essayé d'ajouter avertir déclaration et il commençait à être imprimé plusieurs fois.
trouvé le problème. Veuillez voir ma réponse ci-dessous.

OriginalL'auteur Manoj | 2009-08-03