Les expressions rationnelles en PERL


Introduction


Quelques exemples élémentaires

L'opérateur de correspondance

L'opérateur /.../ et ses options

Interpolation de variables

Perl commence l'analyse de l'expression rationnelle en remplaçant les noms de variables par leur valeur
# recherche de "info" en début du texte
$mot="info";
$texte=<STDIN>; chomp($texte);
if ($texte =~ /^$mot/) { ...

Exemples

Valeurs de retour

La valeur retournée par la fonction dépend du contexte dans lequel elle est appelée.
Dans un contexte scalaire, la fonction renvoie une valeur non nulle en cas de succès, et sinon la valeur undefined $code = ($chaine =~ /expreg/);

Dans un contexte de liste, la fonction renvoie la liste des éléments qui ont vérifié les expressions entre parenthèses. Si l'expression ne correspondait pas, on obtient une liste nulle.

($href) = ($chaine =~ //i);

Dans tous les cas, la fonction fixera les variables 2, ... avec les éléments qui ont reconnu les expressions entre parenthèses.

Fonctions s,split et join

split décompose une chaine en parties toutes séparées par un motif reconnu et construit une liste composée de ces éléments Exemples
# @mots va contenir la liste des mots de la phrase, séparés par un ou plusieurs espaces
$texte="Quel dommage que l'option informatique ait été supprimée !";
@mots= split(/ +/, $texte);

# dans la boucle, @liste va contenir la liste de tous les champs (même le second qui est vide)
# une ligne étant de la forme jean:x:500:500::/home/jean:/bin/bash
$fichier="/etc/passwd";
open(F, $fichier);
while (<F>) {
@liste = split(/:/);
....
}
une meilleure solution pour un traitement sur les valeurs de la liste :
$fichier="/etc/passwd";
open(F, $fichier);
while ($user = <F>) {
($nom, $mdp, $uid, $gid, $titre, $home, $shell) = split(/:/, $user);
....
}

Exercices

A suivre ...