È possibile impostare il valore di ritorno nel comando quit()
, ad es. q(status=1)
. Il valore predefinito è 0, vedi anche? Uscire. Come catturarlo in Perl, è come prendere qualsiasi altro valore di ritorno in Perl. Viene salvato in una variabile speciale $?
se ricordo bene. Vedi anche gli esempi nel perldoc per system
, dovrebbe essere illustrato lì.
Su un sidenote, vorrei solo utilizzare l'interfaccia R-Perl. Si possono trovare informazioni ed esempi qui: http://www.omegahat.org/RSPerl/
Solo per completezza:
All'inizio dello script, si può mettere qualcosa di simile:
options(
warn=2, # This will change all warnings into errors,
# so warnings will also be handled like errors
error= quote({
sink(file="error.txt"); # save the error message in a file
dump.frames();
print(attr(last.dump,"error.message"));
sink();
q("no",status=1,FALSE) # standard way for R to end after errors
})
)
questo salverà il messaggio di errore, e uscire dalla sessione R senza salvare, con il codice di uscita 1 e senza eseguire .Last.
Tuttavia, l'interfaccia R-Perl offre molte più possibilità che vale la pena di verificare se lo si farà più spesso.
fonte
2010-09-08 07:40:02
http://stackoverflow.com/questions/3477916/using-perls-system#3478060 – daxim
@daxim: Questa è solo la metà della risposta. L'altra metà è come impostare lo stato di uscita in uno script R. Quindi questa non è solo una domanda Perl, quindi non un duplicato dell'altra domanda, quindi mi oppongo anche alla proposta di chiudere questa domanda. –
@Aristotle: Credo che David stia suggerendo una soluzione quando parla di restituire un vero valore nello script R. Non fa parte del requisito. – Zaid