reutiliser $1 comme mémoire regex dans un même bloc
Bonjour bonjour!
Alors j'ai un problème avec ma fonction suivante:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| sub substitution {
my ($ligneAModifier, $limite1 ,$limite2 , $motARemplacer, $motDeRemplacement) = @_;
my ( $val1, $val2) = split(/$limite1/i, $ligneAModifier , 2);
my ( $val3, $val4) = split(/$limite2/i, $val2, 2);
recuperation($val3);
while ($val3 =~ /(\S.+)+/){
while ($1 =~ /([a-zA-Z_]+[0-9]+)+/){
if ($fichierAComparer =~ $1){
}
else{
$1 =~ s/$motARemplacer/$motDeRemplacement->()/ge;
}
}
}
return $val1."$limite1".$val3."$limite2".$val4;
} |
Et pour être plus exact avec ce bout la:
Code:
1 2 3 4 5 6 7 8 9
| while ($val3 =~ /(\S.+)+/){
while ($1 =~ /([a-zA-Z_]+[0-9]+)+/){
if ($fichierAComparer =~ $1){
}
else{
$1 =~ s/$motARemplacer/$motDeRemplacement->()/ge;
}
}
} |
while ($val3 =~ /(\S.+)+/) me sert à parcourir "ligne par ligne" $val3, qui est un bout de VBcode,
qui n'a pas de \n (ils sont en ASCII),
à chaque ligne je regarde si il trouve des mots contenant des lettres ET des chiffres while ($1 =~ /([a-zA-Z_]+[0-9]+)+/),
ce qui dans mon cas est un nom de "bouton" d'interface graphique,
et la if ($fichierAComparer =~ $1) je regarde si le nom trouvé est present dans $fichierAComparer,
qui n'est autre que une copie du fichier sur lequel je travail sans $val3 qui est le bloc sur lequel ce bout travail.
Si il est présent je ne fait rien, sinon je remplace par les valeur donné dans la fonction en paramètre.
Alors MON PROBLEME:
Comment faire pour que:
Code:
1 2 3
| else{
$1 =~ s/$motARemplacer/$motDeRemplacement->()/ge;
} |
S'applique sur le premier $1 et non le deuxieme de:
Code:
1 2 3
| while ($val3 =~ /(\S.+)+/){
while ($1 =~ /([a-zA-Z_]+[0-9]+)+/){
if ($fichierAComparer =~ $1){ |
Je sèche un peu... car maintenant mon programme tourne, tourne, tourne, tourne.... et mon ventilo aussi :mouarf: .
Voila merci d'avance.