remplacer un mot dans un fichier [PERL] - Perl - Programmation
Marsh Posté le 23-10-2017 à 16:23:29
Chez moi ça fonctionne... Comment sont définies les variables que tu utilises, notamment $configname? A quoi exactement ressemble ton fichier $LOG?
Ceci étant, à ma connaissance il vaut mieux utiliser la version de open() avec trois arguments et inutile de lire tout le fichier d'un coup si tu fais une boucle après. Perso je ferais comme ceci:
Code :
|
Selon le fichier et ce que tu veux remplacer il peut être nécessaire de modifier le regex pour ne considérer que des mots entiers (et pas remplacer $configname à l'intérieur d'un mot).
edit: +\n dans les commentaires
Marsh Posté le 23-10-2017 à 16:45:40
Et faire un truc homogène avec le reste, sans passer par des variables spéciales pour les file handlers
open(my $fh_in, '<', $log);
et utiliser les variables built-in dans les boucles:
foreach (@contenu) {
s/$configname/$replace/ge;
print $fh_out $_;
}
ou
foreach (<$fh_in> ) {
s/$configname/$replace/ge;
print $fh_out $_;
}
A+,
Marsh Posté le 23-10-2017 à 13:03:08
Bonjour,
J'ai un fichier texte de plusieurs lignes qui contient à plusieurs endroits le mot contenu dans la variable $configname et je veux le remplacer par le contenu de la variable $replace.
Voila ce que j'ai écris :
Le problème c'est qu'il ne remplace que le premier, le deuxième et le dernier mot, mais pas tous les autres .
Quelqu'un à une idée du problème dans mon code ?