Bonjour,

Je cherche à remplacer des lignes d'un fichier texte.
Je récupère mes motifs de recherche et de remplacement dun aun autre fichier texte, que je reformatte un peu, nottament pour précéder les caractères spéciaux par un backslash.
Mon problème est que le texte ne sort pas comme je le souhaite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
$regles{"REGLES"}{$idregle}{"CHANGEOLDBLOC"} = (.*) (.*?)\.QTTIT_T3(.*)
$regles{"REGLES"}{$idregle}{"CHANGENEWBLOC"} = $1 ZZ9K\.ZZ9K_QTTIT$3
ces deux variables font parties d'une table dehashage remplie par lecture d'un fichier et ne sont pas explicitement déclarée comme cela.

lorsque j'utilise la fonction suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$sortie[$i] =~ s/$regles{"REGLES"}{$idregle}{"CHANGEOLDBLOC"}/$regles{"REGLES"}{$idregle}{"CHANGENEWBLOC"}/gi;
le résultat retrouné est le suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Source avant :
IF W_TEST = 1 THEN
            PUT SKIP LIST('TR4:' !! PMTIT.QTTIT_T3);
         IF PMTIT.QTTIT_T3 ^> 0     /* OK Ag FITIT */
THEN DO;
 
Source après :
 
         IF W_TEST = 1 THEN
$1 ZZ9K\.ZZ9K_QTTIT$3
$1 ZZ9K\.ZZ9K_QTTIT$3
         THEN DO;