[Roma.pm] Regex

Emanuele Zeppieri emazep at gmail.com
Sun Jun 21 15:28:03 PDT 2009


2009/6/22 Emanuele Zeppieri <emazep at gmail.com>:
> 2009/6/21 Francesco Cuccaro <cuccaro.francesco at gmail.com>
>>
>> Mi rispondo da solo,
>> Un mio amcio (che ringrazio) mi ha suggerito questo
>>
>> my @dummy = '' =~/(?:$re)?($)/;
>> print scalar(@dummy)-1;
>
> Ciao Francesco.
>
> Forse riusciamo a sorprendere il tuo amico ;-)
>
> my $count =()= $string =~ /pattern/;
>
> P.S.
>
> Nel tuo esempio (o del tuo amico) c'è una piccola imprecisione, doveva essere:
>
> print scalar @dummy;
>
> senza sottrargli 1, perché vuoi il numero di elementi dell'array, non
> l'indice massimo.

Rileggendo meglio il tuo esempio, intendevi mica "contare il numero di
/captures/ presenti nel pattern"? (Perché contare i match significa
tutt'altra cosa).

Comunque il trucco si applica ugualmente, permettendoci come sopra di
risparmiare l'istanziazione dell'array d'appoggio:

my $count =()= '' =~ /(?:pattern)?/;

E ometterei pure il sub-pattern finale ($), perché non ne vedo la
necessità (così rimane valido pure il fatto che non si deve sottrarre
1 a scalar(@dummy) ).


More information about the Roma mailing list