Salut, c'est encore moi

Un script Perl conçu il y a quelques années et qui fonctionne très bien sur un poste équipé de Windows 2000 ne marche plus sous Windows XP.

Versions Perl installées :
- Windows 2000 : v5.6.1 build 635
- Windows XP : v5.8.8 build 822
Les deux versions proviennent d'ActiveState.

Le script en question ne fait strictement rien de méchant : il fait un chdir() pour accéder à un fichier d'entrée qu'il ouvre pour le lire. Pour les besoins du log, la fonction localtime() est utilisée au lancement du programme pour indiquer la date et l'heure du jour. Ensuite, le script se contente de faire du warn dans le log ou du print dans un fichier de sortie ou sur la console Ms-Dos. Rien de bien sorcier !

Dans les deux cas (2000 et XP), tout va bien : la fonction localtime fonctionne, tout ce qui doit être écrit dans le log l'est parfaitement. Le truc qui ne fonctionne pas, c'est qu'avant d'écrire dans un fichier de sortie non encore ouvert, j'affiche un bête print sur la console :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
print "Ecriture dans fichier de sortie\n";
open(SORTIE, etc etc.........);
Ce print là s'affiche bien sous 2000 et le programme ouvre bien le fichier de sortie et va jusqu'à son terme normal. Sous XP, ce print là ne s'affiche pas !!!

Encore plus fort : sous XP, si je rajoute ça dans le code ci-dessus :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
print "AVANT print\n";
print "Ecriture dans fichier de sortie\n";
print "APRES print\n";
open(SORTIE, etc etc.........);
Sur la console Ms-Dos, j'ai ça qui s'affiche :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
AVANT print
APRES print
Comme vous le voyez, le print niché au milieu ne s'affiche pas et bien entendu, le programme n'écrit rien dans le fichier de sortie. Il tourne en boucle, tel un zombi de base.

J'ai testé de paramétrer l'execution de perl.exe sur le poste XP avec une compatibilité d'exécution en mode Windows 2000. Pas efficace du tout.

Question : quelqu'un sait ce qui se passe ???