-+  Associazione
-+  Documenti
 |-  Modern Perl
 |-  Bibliografia
 |-  Articoli
 |-  Talk
 |-  Perlfunc
 |-  F.A.Q.
 |-  F.A.Q. iclp
-+  Eventi
-+  Community
-+  Blog
-+  Link
Corso di Perl



 


indietro

[7] Perché gli operatori del Perl hanno una precedenza diversa rispetto a quelli del C?

In realtà non è vero. Tutti gli operatori del C che vengono riprodotti in Perl hanno la stessa precedenza che hanno in C. Il problema si presenta con gli operatori che in C non esistono, in special modo le funzioni che conferiscono un contesto di lista a tutto quello che sta alla loro destra, ad esempio print, chmod, exec e così via. Queste funzioni sono chiamate "operatori di lista" e appaiono come tali nella tabella delle precedenze di perlop.

Un errore comune è scrivere:

    unlink $file || die "caos";

Esso viene interpretato come:

    unlink ($file || die "caos");

Per evitare questo problema, usate delle parentesi in più oppure usate l'operatore or che ha una precedenza bassissima:

    (unlink $file) || die "caos";
    unlink $file or die "caos";

Gli operatori "in lingua inglese" (and, or, xor e not) hanno una precedenza volutamente inferiore a quella degli operatori di lista, esattamente per le situazione come quella menzionata sopra.

Un altro operatore con una precedenza sorprendente è l'operatore di elevamento a potenza. Ha una precedenza superiore anche al meno unario, facendo sì che -2**2 produca un quattro negativo anzichè positivo. Inoltre è associativo a destra, e questo vuol dire che 2**3**2 è due elevato alla nona potenza, non otto al quadrato.

Benché abbia la stessa precedenza che ha in C, l'operatore ?: del Perl produce un lvalue [un valore che può trovarsi a sinistra di un operatore di assegnamento, NdT]. Questo codice assegna $x a $a o $b, a seconda del valore di verità di $forse:

    ($forse ? $a : $b) = $x;

vedi in inglese

AUTORE E COPYRIGHT

Copyright (c) 1997, 1998, 1999, 2000, 2001 Tom Christiansen e Nathan Torkington. Tutti i diritti riservati.

Questa documentazione è libera; puoi ridistribuirla e/o modificarla secondo gli stessi termini applicati al Perl.

Indipendentemente dalle modalitè di distribuzione, tutti gli esempi di codice in questo file sono rilasciati al pubblico dominio. Potete, e siete incoraggiati a farlo, utilizzare il presente codice o qualunque forma derivata da esso nei vostri programmi per divertimento o per profitto. Un semplice commento nel codice che dia riconoscimento alle FAQ sarebbe cortese ma non è obbligatorio.

D:
Progetti e documenti in rilievo
Corso di Perl Progetto pod2it
D:
La ML di Perl.it
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!
D:
Annunci Google