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 :
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 !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 print "Ecriture dans fichier de sortie\n"; open(SORTIE, etc etc.........);
Encore plus fort : sous XP, si je rajoute ça dans le code ci-dessus :
Sur la console Ms-Dos, j'ai ça qui s'affiche :
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.........);
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 AVANT print APRES print
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 ???
Partager