Perl : Recherche chaine de caractére

Résolu
titexe2009 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
 lami20j -
Bonjour,

Est ce que quelqu'un peut m'expliquer ce bout de code ?

if ($resp =~ m~$left(.*?)$right~s) {
$result{$_} = $1;
}

car cette partie marche toujours dans mon code , sauf dans le cas ou $left est égale a une chaine de caractère qui contient $.

Exemple : $left = test$test

Merci d'avance,

cordialement

titexe
A voir également:

1 réponse

lami20j
 
Salut,

Je pourrai de donner une explication de la regex, mais ça te servira à quoi si tu ne montres pas un exemple concret pour qu'on puisse comprendre ce que le code est censé faire. Et puisqu'on parle de code il faut afficher un peu plus que ça.

Voilà l'algo, mais je ne sais pas à quoi te serviras
if         #si

(
$resp =~ # la variable corresponds au motif
m        # l'opérateur match
~        # le séparateur de regex
$left    # variable interpolée dans regex
(.*?)    # $1 -> capture de n'importe quel caractère 
         # zéro fois, une fois ou n'importe combien de fois 
	 #mais en evitant la gourmandise de *
$right   # une autre variable interpolée
~        # séparateur regex
s        # modificateur de regex
         # Permet de traiter une chaîne comme une seule ligne. 
         # Le caractère . reconnaît alors n'importe quel caractère, 
         #  même une fin de ligne \n, qui normalement n'est pas reconnue. 
)  
{        # Alors
$result{$_} = $1;  # on affecte $1 (la capture de regex) comme valeur pour clé $_ de hash %result 
} 
1