Forza ESPR ad essere interpretata in un contesto scalare e restituisce
il valore di ESPR.
@conteggi = ( scalar @a, scalar @b, scalar @c );
Non c'è un operatore equivalente per forzare un espressione ad
essere interpolata in un contesto di lista perché in pratica
questo non è mai necessario. Comunque, se volete davvero farlo,
potreste usare il costrutto @{[ (una qualche espressione) ]}, ma di
solito è sufficiente un semplice (una qualche espressione)
Dato che scalar è un operatore unario, se accidentalmente
per ESPR utilizzate una lista con parentesi, questo ha un comportamento
analogo ad una espressione virgola scalare che valuta tutto in un
contesto vuoto meno l'ultimo elemento e che restituisce l'elemento
finale valutato in un contesto scalare. Spesso questo è quello
di cui si ha bisogno.
La seguente singola istruzione:
print uc(scalar(&pippo,$pluto)),$paperino;
è l'equivalente virtuoso di queste due:
&pippo;
print(uc($pluto),$paperino);
Consultate perlop per maggiori dettagli sugli operatori unari e
sull'operatore virgola.
mongers@perl.it è la lista ufficiale di Perl Mongers Italia per
porre quesiti di tipo tecnico, per rimanere aggiornato su meeting,
incontri, manifestazioni e novità su Perl.it. Iscriviti!