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 :
#personnellement je trouve ces deux lignes indispensables, après le FATAL=>'all' on peut en discuter... use strict; use warnings FATAL=>'all'; #gestion d'erreur avec les fichiers! use autodie; my $LOG="input"; my $LOG2="output"; my $configname="old"; my $replace="new"; open(FILE_IN, '<', $LOG); open(FILE_OUT, '>', $LOG2); while((my $ligne=<FILE_IN> )) #parenthèses supplémentaires pour indiquer #qu'on veut bien une assignation et non pas une comparaison avec faute de frappe (= à la place de ==) { $ligne=~ s/ $configname/ $replace/geo; #o=once=le regex ne change pas ($configname et $replace), #pas indispensable mais peut-être utile (vitesse) print FILE_OUT $ligne; #pas besoin de mettre des guillemets }
|
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
Message édité par rat de combat le 23-10-2017 à 16:24:24