Bonjour,
Je possède 2 fichiers, 1 avec des valeurs (fic1) et un autres dit de référence (fic2) .
Je souhaite réaliser un programme Perl qui pour chaque valeur du fic1 je vienne modifier un champ défini du fic2 et écrire le résultat dans un fichier final (fic3).
Ce que je n'arrive pas à faire c'est d'écrire dans fic3.
Vous trouverez ci dessous le dèbut de mon script:
#!/usr/bin/perl
# Nom du fichier analysé
$file="c:\\swtable2.txt";
# Ouvre le fichier, qui s'il n'existe pas
open(INFILE,$file) or die "Impossible trouver le fichier $file\n";
open(FILE,">mont.txt") or die "Impossible fichier mont.txt\n";
while () {
$lignes=$.; #compte le nombre de lignes du fichier
@champ=split;
$res=$champ[1];
$ag=$champ[0];
$ip=$champ[2];
if ($ip =~ /\.0$/) {$ip =~ s/\.0$/\.1/;# Remplace .0 par .1}
if ($res =~ /^N/) {$res =~ s/^N/S/;# Remplace .0 par .1}
print FILE "$res $ip\n" ; # Ecrit toutes les lignes dans mont.txt
}
close ("FILE");
open ("WFILE", ">>mont2.txt") or die ("Impossible d'ouvrir le fic. mont2.txt");
open(FILE,"mont.txt") or die "Impossible de trouver le fichier mont.txt\n";
open ("SUIVEUR", "c:\\site.txt");
while () {
while () {@champe=split(/ /);
$serv = $champe[0];
$ip = $champe[1];
}
$_ =~ s/toto/$serv/;# Remplace WAITING par SENT
print WFILE $_ ; # Ecrit toutes les lignes dans mont2.txt
}
}
close ("SUIVEUR");
close ("NEWFILE");
close ("WFILE");
close ("FILE");
close ("INFILE");
Merci à tous
# open, close sans "" ?
Posté par stillbsd . Évalué à 1.
Enlève peut-etre les guillemets autour du "file handler" dans ces 2 ordres (même chose pour les close):
open ("WFILE", ">>mont2.txt") or die ("Impossible d'ouvrir le fic. mont2.txt");
open ("SUIVEUR", "c:\\site.txt");
Et de préférence, utilise use strict , même si cela t'oblige à déclarer toutes tes variables.
Ca aide souvent à se rendre compte d'erreurs grossières.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.