Bonjour,
Je suis débutant en perl, je doit modifier du texte dans un fichier à certain endroit.
Je doit faire plusieurs modification alors j'ai décidé de faire une petite fonction.
Alors avec une version sans fonction cela marche, mais dès que j'utilise la fonction je n'arrive plus à lui faire comprendre le $1 lorsque je l'appelle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 sub substitution { my ($ligneAModifier, $limite1 ,$limite2 , $motARemplacer, $motDeRemplacement) = @_; my ( $val1, $val2) = split(/$limite1/i, $ligneAModifier , 2); my ( $val3, $val4) = split(/$limite2/i, $val2, 2); $val3 =~ s/$motARemplacer/$motDeRemplacement/g; return $val1."$limite1".$val3."$limite2".$val4; }
En effet sans fonction cela me donné le regex s/(\\w+\\s*=)/' $1/g
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 if($ligne2 =~ /VBCode/i){ $ligne2 = substitution($ligne2, "Inherits", "Auto-Generated", "Friend", "\' Friend"); $ligne2 = substitution($ligne2, "Protected Sub CleanupUserCode", "Sub", "(\\w+\\s*=)", "\' \$1"); print $FhModifie $ligne2; }
Or maintenant quand il doit utiliser s/$motARemplacer/$motDeRemplacement/g,
soit je met "\' \$1" pour $motDeRemplacement, et il me remplace dans le fichier par ' $1,
soit je met "\' $1" et la il est pas content car il ne sait pas d'ou sort ce $1,
Comment je peut faire pour passer le $1 et qu'il le prenne en considération en tant que s/(\\w+\\s*=)/' $1/g?
Merci d'avance (je suis nouveau sur le site dont si j'ai fait quelque chose de mal ou autre dites le moi )
Partager