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.