Bonjour bonjour!
Alors j'ai un problème avec ma fonction suivante:
Et pour être plus exact avec ce bout la:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
while ($val3 =~ /(\S.+)+/) me sert à parcourir "ligne par ligne" $val3, qui est un bout de VBcode,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } } }
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:
S'applique sur le premier $1 et non le deuxieme de:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 else{ $1 =~ s/$motARemplacer/$motDeRemplacement->()/ge; }
Je sèche un peu... car maintenant mon programme tourne, tourne, tourne, tourne.... et mon ventilo aussi .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 while ($val3 =~ /(\S.+)+/){ while ($1 =~ /([a-zA-Z_]+[0-9]+)+/){ if ($fichierAComparer =~ $1){
Voila merci d'avance.
Partager