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



 


indietro

[37] Cosa c'è di sbagliato nel racchiudere sempre le "$varabili" tra virgolette?

Il problema è che questo rendere stringa mediante le virgolette converte a forza numeri e riferimenti in stringhe, anche quando non volete che lo siano. Prendetela così: l'espansione con le virgolette viene usata per produrre nuove stringhe. Se avete già una stringa, perché ne volete un'altra?

Se siete abituati a scrivere cose strane come queste:

    print "$var";         # SCORRETTO
    $nuovo = "$vecchio";  # SCORRETTO
    unafunz("$var");      # SCORRETTO

vi troverete nei guai. Queste dovrebbero (nel 99,8% dei casi) essere le forme più semplici e dirette:

    print $var;
    $nuovo = $vecchio;
    unafunz($var);

D'altronde, oltre a essere più lunghe da scrivere, finirete per introdurre errori nel codice quando la cosa contenuta nello scalare non è né una stringa né un numero, ma un riferimento:

    funz(\@array);
    sub funz {
        my $arif = shift;
        my $orif = "$arif";  # SBAGLIATO
    }

Potreste anche andare incontro a problemi sottili con quelle poche operazioni in Perl che sentono la differenza tra una stringa ed un numero, quali il magico operatore di auto-incremento ++, oppure la funzione syscall().

Forzare a stringa distrugge anche gli array.

    @linee = `comando`;
    print "@linee";        # SBAGLIATO - spazi aggiuntivi
    print @linee;          # giusto

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