Dav*_*d B 7 perl r return-value
我编写了一个shebang R脚本,并希望从Perl脚本执行它.我目前正在使用system ($my_r_script_path, $r_script_arg1, $r_script_arg2, ...)
,我的问题是如何验证R脚本正常终止(没有错误或警告).
我猜我应该让我的R脚本在最后返回一些真值,只要一切正常,然后在Perl中捕获这个值,但我不知道该怎么做.
谢谢!
您可以在命令中设置返回值quit()
,例如q(status=1)
。默认值为 0,另请参阅 ?quit。如何在 Perl 中捕获该值,就像在 Perl 中捕获任何其他返回值一样。$?
如果我没记错的话,它保存在一个特殊变量中。另请参阅 perldoc for 中的示例system
,应该在那里进行说明。
顺便说一句,我只使用 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
})
)
Run Code Online (Sandbox Code Playgroud)
这将保存错误消息,并在不保存的情况下退出 R 会话,退出代码为 1 并且不运行 .Last。
尽管如此,R-Perl 界面还是提供了更多的可能性,如果您打算更频繁地这样做,那么值得一试。