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



 


indietro

[19] Perché "my($pippo) = <FILE>;" non funziona bene?

my() e local() conferiscono un contesto di lista alla parte destra dell'assegnamento =. L'operazione di lettura <FH>, come molti altri operatori e funzioni del Perl, è sensibile al contesto in cui è stata chiamata, e si comporta di conseguenza. Generalmente la funzione scalar() può essere d'aiuto. Questa funzione non ha alcun effetto sui dati medesimi (contrariamente alla credenza popolare) ma dice ai suoi argomenti di seguire il comportamento che essi devono avere in un contesto scalare, qualunque esso sia. Se la funzione non ha un comportamento scalare definito, questa tecnica naturalmente non vi aiuterà (come nel caso di sort()).

Per forzare un contesto scalare in questo caso specifico, ad ogni modo, dovete semplicemente togliere le parentesi:

     local($pippo) = <FILE>;           # SBAGLIATO
     local($pippo) = scalar(<FILE>);   # ok
     local $pippo  = <FILE>;           # giusto

Probabilmente dovreste usare variabili lessicali, comunque, ma la sostanza non cambia:

     my($pippo) = <FILE>;   # SBAGLIATO
     my $pippo  = <FILE>;   # 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