我如何 运行 来自 R 的带有特定模块的 perl 脚本?

How can I run a perl script from R with specific modules?

我可以从终端 运行 perl 脚本“myperlscript.pl”,没有任何问题。但是,如果我尝试从 RStudio 中 运行 相同的 perl 脚本,它会给我以下错误:

command <- "myperlscript.pl outputfile.txt"

system2('perl', command)

Can't locate Sort/Fields.pm in @INC (you may need to install the Sort::Fields module) 
(@INC contains: 
/Library/Perl/5.28/darwin-thread-multi-2level 
/Library/Perl/5.28 
/Network/Library/Perl/5.28/darwin-thread-multi-2level 
/Network/Library/Perl/5.28 
/Library/Perl/Updates/5.28.2 
/System/Library/Perl/5.28/darwin-thread-multi-2level 
/System/Library/Perl/5.28 
/System/Library/Perl/Extras/5.28/darwin-thread-multi-2level 
/System/Library/Perl/Extras/5.28) at myperlscript.pl line 4.
BEGIN failed--compilation aborted at myperlscript.pl line 4.

我在 /Users/admin/perl5/perlbrew/perls/5.26.2/lib/site_perl/5.26.2 中安装了 Sort::Fields 模块,使用终端可以正常工作,但 RStudio 中的 perl 似乎没有为该目录编制索引perl 模块 - 我尝试将它添加到 @INC 但不知何故我无法让它工作......有什么想法或想法吗?非常感谢帮助!

最好的,Heiko

您遇到的问题是您的 R 代码使用的是系统 perl (5.28) 而不是您的 pelbrew perl (5.26.2)。

您需要执行 system2('perl', command) 调用才能使用 perlbrew perl 而不是系统 perl。

要在你的 shell 激活 perlbrew perl 的地方执行此操作,请键入 which perl 这应该会给你 pelbrew perl 的完整路径。

将此完整路径作为第一个参数传递给 system2(--result of 'which perl'--, command)