Re: perl split

Top Page

Reply to this message
Author: michel buonomo
Date:  
To: guilde
CC: Guilde
Subject: Re: perl split


Patrick Dupre a écrit :
> Bonjour,
>
> Est-ce que quelqu'un peut m'explique pourquoi la function split
> suivante me donne 3 ?
> perl -e '$a="(0 1)";@b= split /[(| |(]/, $a;print scalar @b,"\n";'
>
> Si je supprime la permiere parenthese le resultat est correct. En fait
> il semble que split cherche a delimiter ce qui est devant le premier
> delimiteur y compris lorsque qu'il n'y a rien. Comment est-ce je peux
> eviter cet effet de bord ?
>
> Merci.
>

(tu as une parenthèse dans le mauvais sens, et les barres verticales
n'ont pas leur place les crochets : split recherche aussi les barres
verticales dans la chaine comme séparateur)

Je ferais ça en deux étapes :
perl -e '$a="(0 1)";$a =~ s/^[ ()]*//;@b= split /[ ()]/, $a;print
"$_","\n" for @b;' quitte à ranger $a dans $c si tu ne veux pas toucher
à $a.

MicheL