POD2-FR

 view release on metacpan or  search on metacpan

FR/perlretut.pod  view on Meta::CPAN

implicitement la variable C<$_>.

Un modificateur spécifique à l'opération de recherche/remplacement est
le modificateur d'évaluation C<s///e>. C<s///e> ajoute un C<eval{...}>
autour de la chaîne de remplacement et le résultat de cette évaluation
est substitué à la sous-chaîne mise en correspondance. C<s///e> est
utile si vous avez besoin de faire un traitement sur le texte à
remplacer. Cet exemple compte la fréquence des lettres dans une
ligneE<nbsp>:

    $x = "Bill the cat";
    $x =~ s/(.)/$chars{$1}++;$1/eg;  # Le $1 final remplace le caractère par lui-même
    print "frequency of '$_' is $chars{$_}\n"
        foreach (sort {$chars{$b} <=> $chars{$a}} keys %chars);

qui afficheE<nbsp>:

    frequency of ' ' is 2
    frequency of 't' is 2
    frequency of 'l' is 2
    frequency of 'B' is 1
    frequency of 'c' is 1
    frequency of 'e' is 1
    frequency of 'h' is 1
    frequency of 'i' is 1
    frequency of 'a' is 1

Comme pour l'opérateur C<m//>, C<s///> peut utiliser d'autres
délimiteurs comme C<s!!!> ou C<s{}{}> et même C<s{}//>. Si les
délimiteurs sont des apostrophes C<s'''> alors l'expression
rationnelle et le remplacement sont traités comme des chaînes entre
apostrophes et aucune interpolation de variables n'est
effectuée. C<s///> dans un contexte de liste retourne la même chose
qu'en contexte scalaire, c'est à dire le nombre de substitutions
effectuées.

=head3 L'opérateur de découpage (split)

La fonction B<C<split> > peut, elle aussi, utiliser un opérateur de
mise en correspondance C<m//> pour découper une chaîne. C<split
/regexp/, chaine, limite> découpe la C<chaine> en une liste de
sous-chaînes et retourne cette liste. L'expression rationnelle
C<regexp> est utilisée pour reconnaître la séquence de caractères qui
servira de séparateur lors du découpage de C<chaine>. La C<limite>, si
elle est présente, indique le nombre maximal de morceaux lors du
découpage. Par exemple, pour découper une chaîne en mots,
utilisezE<nbsp>:

    $x = "Calvin and Hobbes";
    @words = split /\s+/, $x;  # $word[0] = 'Calvin'
                               # $word[1] = 'and'
                               # $word[2] = 'Hobbes'

Si l'expression rationnelle vide C<//> est utilisée alors l'expression
rationnelle correspond partout et la chaîne est découpée en caractères
individuels. Si l'expression rationnelle contient des groupes alors la
liste produite contient aussi les sous-chaînes reconnues par les
groupes. Par exempleE<nbsp>:

    $x = "/usr/bin/perl";
    @dirs = split m!/!, $x;  # $dirs[0] = ''
                             # $dirs[1] = 'usr'
                             # $dirs[2] = 'bin'
                             # $dirs[3] = 'perl'
    @parts = split m!(/)!, $x;  # $parts[0] = ''
                                # $parts[1] = '/'
                                # $parts[2] = 'usr'
                                # $parts[3] = '/'
                                # $parts[4] = 'bin'
                                # $parts[5] = '/'
                                # $parts[6] = 'perl'

Puisque le premier caractère de $X est reconnu par l'expression
rationnelle, C<split> ajoute un élément initial vide à la liste.

Si vous avez tout lu jusqu'ici, félicitations ! Vous possédez
maintenant tous les outils de base pour utiliser les expressions
rationnelles afin de résoudre de nombreux problèmes de traitement de
textes. Si c'est la première fois que vous lisez ce tutoriel, vous
devriez vous arrêter ici et jouer quelques temps avec les expressions
rationnelles... La S<Partie 2> concerne des aspects plus ésotériques
des expressions rationnelles et ces concepts ne sont certainement pas
nécessaires au début.

=head1 Partie 2: au-delà

Bon, vous connaissez les bases des expressions rationnelles et vous
voulez en savoir plus. Si la mise en correspondance d'une expression
rationnelle est analogue à une marche en forêt alors les outils dont
nous avons parlé dans la partie 1 sont la carte et le compas, des
outils basiques que nous utilisons tout le temps. La plupart des
outils de la partie 2 sont alors analogues à un lance fusées
éclairantes ou à un téléphone satellite. On ne les utilise pas très
souvent mais, en cas de besoin, ils sont irremplaçables.

Ce qui suit présente les fonctionnalités les plus avancées, les moins
utilisées ou les plus ésotériques des expressions rationnelles de
perl. Dans cette seconde partie, nous supposerons que vous êtes à
l'aise avec les outils de base pour nous concentrer sur ces nouvelles
fonctionnalités.

=head2 Les plus des caractères, des chaînes et des classes de caractères

Il y a de nombreuses séquences d'échappement et classes de caractères
dont nous n'avons pas encore parlé.

Il existe plusieurs séquences d'échappement qui convertissent les
caractères ou les chaînes entre majuscules et minuscules. C<\l> et
C<\u> convertissent le caractère suivant respectivement en minuscule
ou en majusculeE<nbsp>:

    $x = "perl";
    $string =~ /\u$x/;  # reconnaît 'Perl' dans $string
    $x = "M(rs?|s)\\."; # notez le double backslash
    $string =~ /\l$x/;  # reconnaît 'mr.', 'mrs.' et 'ms.',

C<\L> et C<\U> convertissent une sous-chaîne entière délimitée par C<\L>,
C<\U> ou C<\E> en minuscule ou majusculeE<nbsp>:

    $x = "This word is in lower case:\L SHOUT\E";
    $x =~ /shout/;       # correspond
    $x = "I STILL KEYPUNCH CARDS FOR MY 360"
    $x =~ /\Ukeypunch/;  # correspond

S'il n'y a pas de C<\E>, la changement de casse a lieu jusqu'à la fin



( run in 0.784 second using v1.01-cache-2.11-cpan-71847e10f99 )