Вы можете установить возвращаемое значение в команде quit()
, например, q(status=1)
.По умолчанию 0, см. Также? Выход.Как отловить это в Perl, это все равно, что перехватить любое другое возвращаемое значение в Perl.Он сохраняется в специальной переменной $?
, если я правильно помню.Смотрите также примеры в perldoc для system
, там это должно быть проиллюстрировано.
В sidenote я бы просто использовал интерфейс R-Perl.Вы можете найти информацию и примеры здесь: http://www.omegahat.org/RSPerl/
Просто для полноты:
В начале вашего сценария вы можете поместить что-то вроде:
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
})
)
Этосохранит сообщение об ошибке и выйдет из сеанса R без сохранения, с кодом выхода 1 и без запуска .Last.
Тем не менее, интерфейс R-Perl предлагает гораздо больше возможностей, которые стоит проверить, если вы собираетесь делать это чаще.