suivant: Utilisation: translation
monter: Les expressions régulières
précédent: Valeurs de retour
  Index
Utilisation : substitution
La syntaxe de la fonction de substitution est analogue à celle
utilisée par sed, vi, ..., mises à part les quelques
différences syntaxiques d'écriture des regexps. De manière analogue à
la fonction de comparaison, la fonction de substitution s'applique par
défaut à la variable $_ . Pour la faire s'appliquer à une
variable quelconque, il faut utiliser la notation :
$var =~ s/REGEXP/chaîne/egismox;
Les modificateurs qui suivent l'expression sont identiques à ceux
applicables à la fonction de comparaison.
Un nouveau modificateur est disponible : e. Il précise que
l'expression de remplacement est une expression à évaluer, ce qui
permet d'utiliser le résultat d'une opération dans la chaîne de
remplacement.
Par exemple, pour convertir des caractères du type % xx où
xx est un code ASCII en hexadécimal dans le caractère
correspondant, il suffit d'écrire:
$chaine =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
Une petite explication ? On veut effectuer une substitution
(s/.../.../) sur la variable $chaine. On cherche un
caractère % suivi de deux caractères valides en
hexadécimal ([a-fA-F0-9). On mémorise ces deux caractères,
dans la variable $1 puis on remplace les trois caractères (les
deux mémorisés plus le % qui les précéde) par le résultat de
la fonction pack("C", hex($1)), qui évalue le contenu de
$1 en hexadécimal, puis affiche le caractère correspondant à
cette valeur. On effectue cette opération tant qu'il reste des
possibilités (le modificateur g).
Prenez votre temps pour essayer de comprendre le fonctionnement de
cette expression régulière. Ensuite, essayez de comprendre les
transformations qui permettent d'arriver à l'expression équivalente :
$chaine =~ s/%([a-f0-9]{2})/pack("C", hex($1))/egi;
suivant: Utilisation: translation
monter: Les expressions régulières
précédent: Valeurs de retour
  Index
Olivier Aubert
1999-06-01
|