Che cosa significa il codice di stato dell'interprete Perl significa?
Domanda
Sto cercando di eseguire una copia dell'interprete Perl usando Runtime.exec di Java (). Tuttavia, ha restituito il codice di errore 9
. Dopo aver eseguito il file un paio di volte, l'interprete perl
misteriosamente ha iniziato a restituire il codice 253, senza cambiamenti nel mio comando a tutti.
Che cosa significa il codice 253
/ code 9
? Una ricerca su Google per i codici di uscita perl
dell'interprete è giunta a nulla. Dove posso trovare un elenco di codici di uscita per l'interprete Perl?
Soluzione
Se il programma è sintatticamente corretto, viene eseguito. Se il programma viene eseguito fuori alla fine senza colpire un operatore
exit()
odie()
, unexit(0)
implicita è previsto per indicare il completamento con successo.
In questo modo, il programma è in esecuzione deve essere in qualche modo specificando i valori di uscita tramite morire , uscita o equivalente.
Altri suggerimenti
In circostanze normali, perl
tornerà qualunque sia il programma viene eseguito rendimenti. Quindi, non si può generalizzare il significato del valore di ritorno senza conoscere il programma è in esecuzione.
Perl stesso non ha codici di uscita definiti; a meno che il crash interprete Perl in un modo davvero orribile, il codice di uscita è determinato dal programma che perl
è in esecuzione, non per perl
sé.
L'interprete Perl in realtà non i codici di uscita di ritorno del proprio se lo script non viene eseguito. La maggior parte degli errori di sintassi portano ad uscire Codice 9:
funzione Unknown / bareword non consentiti:
perl -e 'use strict; print scalar(localtime); schei;'
$? = 9
divisione per zero:
perl -e 'use strict; print scalar(localtime); my $s = 1/0;'
$? = 9
Errore di sintassi:
perl -e 'use strict; print scalar(localtime); my $ff; $ff(5;'
$? = 9
con dado:
perl -e 'use strict; print scalar(localtime); die "twaeng!"'
$? = 9
un modulo sconosciuto era l'unica situazione che ho trovato perl per uscire in modo diverso:
perl -e 'use strict; use doof; print scalar(localtime);'
$? = 2
A proposito sto ancora alla ricerca di un elenco completo di codici di uscita del interprete Perl me stesso. Chiunque ha ottenuto un'idea dove guardare, a parte le fonti interpreti Perl?
Dal momento che il codice di errore è cambiato dopo alcune piste; se si esegue un'applicazione Java
come una webapp in esecuzione continua, controllare se può essere una sorta di perdita di memoria.
È possibile verificare lo script perl
di vari problemi eseguendolo con le opzioni -Tw
dell'interprete Perl, per le modalità contaminati e avvisi attivati, vedi perlrun per maggiori informazioni su questi.