Perl : Recherche chaine de caractére

[Résolu/Fermé]
Signaler
Messages postés
12
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
15 novembre 2010
-
 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

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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci