Cosa significa la variabile speciale $ @ in Perl?
Domanda
Sto cercando di capire il seguente codice:
sub foo {
...
if ( $@ ) {
...
die $@;
}
}
Soluzione
Se si verifica un errore di sintassi o runtime errore o un "die" affermazione è eseguito, un valore indefinito è restituito da " eval " ;, e $ @ è impostato su il messaggio di errore. Se non ci fosse errore, $ @ è garantito per essere nullo stringa.
Vedi anche perldoc perlvar
.
Altri suggerimenti
$ @
è una variabile magica che contiene il messaggio di errore dell'ultimo comando eval
, se presente.
Il ciclo if dovrebbe essere preceduto da eval per poter intercettare $ @.
Durante un eval (), $ @ è sempre impostato su fallimento e cancellato su successo.
Nel caso in cui il codice all'interno di eval () non sia stato compilato, $ @ è impostato sull'errore di compilazione.