[Roma.pm] Alca Seltzer

Aldo Calpini dada at perl.it
Thu Mar 2 10:33:41 PST 2006


Emanuele Zeppieri ha scritto:
> Ma, giusto per ingarbugliare ulteriormente le cose, ho appena verificato
> che:
>
> 	if (my $foo = 123)
>
> genera effettivamente il warning, *ma*
>
> 	if (my $foo = shift)
>
> non genera alcun warning! (Sempre su niPerl 5.8.7.2).
> ... E shift mi sembra proprio di ricordare che c'entrasse (o erano gli
> effetti dell'alcool e della porchetta).
> La sottile differenza tra le due situazioni mi farebbe pensare al
> classico warning "troppo intelligente" che a un certo punto si è deciso
> di rimuovere, almeno in un caso...
>   

nope. non è "troppo" intelligente, lo è giustamente. l'assegnazione ha 
come side-effect quello di restituire il valore assegnando, per cui ha 
perfettamente senso testare (my $foo = shift). se shift restituisce 
undef o falso, il blocco if viene saltato, mentre se shift restituisce 
un valore vero, il blocco if viene eseguito con tanto di $foo valorizzato.

non ha giustamente alcun senso testare (my $foo = 123), e il warning mi 
sembra appropriato.

credo quindi che il warning venga emesso solo l'assegnazione di valori 
costanti; il che comunque non sgarbuglia la matassa. panet dovrà 
rispondere di tutto ciò al prossimo meeting!

cheers,
Aldo


More information about the Roma mailing list