< < E-NEF > >
Prog. Perl | Art Roman | Voyager | Cartes ()
                  dragon                     e-nef                 Plan du Site
Contact
my.e-nef v0.1
  • Kernel Linux stable: 2.6
  • Perl: 5.8
  • Apache: 2.0
  • mod_perl: 2.0
  • postgres: 8.0


Rubriques


Recherche sur le Site





Bookmarks


Recommandation de Lecture


Questions ?
Dites nous ce que vous
avez pensé de cette page

 Excellent
 Vaut le coup de le lire
 Sans intérêt

 Pas assez technique
 Juste comme il faut
 Trop technique



Cours de Perl
next up previous index
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 %xxxx 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;

next up previous index
suivant: Utilisation: translation monter: Les expressions régulières précédent: Valeurs de retour   Index
Olivier Aubert
1999-06-01



Publicité

© Copyright 1998-2010 Emmanuel PIERRE. Libre reproduction sous Licence LLDDv1.
Pour tout commentaire, webmaster@e-nef.com
Dernière MaJ 31/01/2018

Valid XHTML 1.0!

No Patents/