Bonjour,
le message d'erreur est explicite : il n'arrive pas à ouvrir le premier fichier. En affichant ce que contient la variable $! dans tes deux appels à die( ), tu en connaitrais la cause
Voici ton code remanié :
1 2 3 4 5 6 7 8 9 10 11
| open(LIRE,"lire.txt")or die ("Erreur d'ouverture de LIRE : $!") ;
open(ECRIRE,">ecrire.txt")or die ("Erreur de creation de TOTO : $!") ;
#while () {
while (<LIRE>) { # c'est pas plutôt ça qu'il te faut ? ;o)
print ECRIRE $_;
}
close(LIRE);
close(ECRIRE); |
J'ai également changé ton while( )
Quant à ta question qui n'est pas bête du tout : comment compiler et exécuter un programme perl en utilisant ActiveState ActivePerl, c'est le binaire 'perl.exe' qui se charge de compiler, puis de lancer ton script.
Si de ton côté, tu souhaites compiler ** de toi-même ton script avant de le lancer, tu peux dans ta fenêtre Ms-Dos taper ceci par exemple :
perl.exe -c -w mon_script.pl
Le flag -c indique à Perl qu'il doit juste compiler le script. Si la compilation échoue, tu auras un message d'erreur dans ta fenêtre Ms-Dos.
Le flag -w, je m'en sers beaucoup car fait remonter plus de messages d'avertissements. Pas indispensable mais j'aime assez
** la compilation d'un script Perl n'est que temporaire, ça ne donne pas lieu à un fichier exécutable. Mais y a moyen de faire.
Edit : j'ignore le but final de ton script qui ressemble sauf erreur plus à un petit test qu'autre chose mais si l'objectif final était d'avoir une copie parfaite de ton fichier "lire.txt" sous le nom de "ecrire.txt", il existe le module (intégré au CORE, j'le précise pour pas me faire taper sur les doigts par Jedai ) File::Copy qui fait fort bien son office en copie ou déplacement de fichiers.
Partager