Re,
Quelque petits conseils :
1
$inter=$1;
$ligne="+$inter+ $ligne";
Pas besoin d'introduire la variable $inter, tu peux utiliser directement $1
Donc $ligne ="+$1+ $ligne";
2
Pas besoin d'utiliser des paranthèses pour afficher.
print ("$ligne");
Je trouve donc correctement les ligfnes ou mon occurence est présente mais le problème est qu'il y a des fois ou mon occurence est présente plusieurs fois dans la ligne . . . et avec ce script je trouve que la première occurence . . .
En fait il ne s'agit pas de ce que tu trouves mais plutôt de ce que tu affiches.
$ligne="+$inter+ $ligne";
Veut dire que chaque ligne est remplacée avec le contenu de $1 et la ligne.
Ex:
disons que le contenu soit +L. 125-65+
et pour les lignes on a
coucou@... et 2eme fois coucou@....
Le résultat sera
+L. 125-65+ coucou@... et 2eme fois coucou@....
même si tu trouves tous les occurences avec le modificateur /g
m//
Mais il ne faut pas oublier pas non plus que en contexte scalaire m//g indique une detection progressive et dans un contexte de liste m//g renvoie la liste de toutes les occurences. if ( @val = $mot =~ /test/gi ) {# contexte liste
printf "Test trouver de %d fois.\n",scalar @val;
}
=======================================
while ( $val =~ /t/gi ) { # contexte scalaire
printf "t ou T dans la position %d.\n",pos($val) -1;
}
s///
Dans ce cas s///g actionne comme un recherch/remplecement global qui modifie tout d'un coup et il ne fait pas de détection progressive en contexte scalaire.


