2013-04-30 9 views
5

Ho uno script Perl che non riesco a capire.

for $i(@myarr) 
{ 
    #some stuff 
    eval { 
     #some stuff 
    }; 
    if([email protected]) 
    { 
     print "*** [email protected] ****"; 
    } 
} 
  1. Che cosa eval fare? È un comando Perl standard o solo un sub?
  2. Qual è la variabile $ @? Attualmente sta stampando una stringa ma non so da dove provenga quella stringa.
+2

dai un'occhiata a http://perldoc.perl.org/functions/eval.html –

risposta

7

Per aggiungere alla risposta di Suic, vedere il modulo English che consente di utilizzare più descrittivo $EVAL_ERROR anziché [email protected] ei Try::Tiny o TryCatch moduli che evitano le trappole comuni associati con l'utilizzo di eval per la gestione delle eccezioni. Inoltre, la prossima volta che ti interroghi su una funzione Perl, perldoc -f è tuo amico (come perldoc -f eval).

+0

Ciao zoul grazie per le informazioni aggiuntive! riguardo a perldoc -f, dovrei eseguirlo sul mio interprete? Sto usando Hamilton C Shell che può facilmente rilevare la versione di Perl da perl -v, ma non può eseguire il comando. –

+0

Non ho idea di Perl su Windows, mi dispiace. Puoi sempre solo google per "perldoc foo", funziona allo stesso modo. – zoul

6

[email protected] L'errore di sintassi Perl o il messaggio di errore di routine dell'ultimo comando di eval, do-FILE o richiesta. Se impostato, la compilazione non è riuscita o la funzione die è stata eseguita all'interno del codice dell'eval. si prega di leggere questo documento http://perldoc.perl.org/perlvar.html

+0

Grazie per la risposta. Ora capisco cosa fa la valutazione. –