Perl : Recherche chaine de caractére

Résolu/Fermé
titexe2009 Messages postés 12 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 15 novembre 2010 - 19 janv. 2010 à 11:45
 lami20j - 19 janv. 2010 à 13:09
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

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