3

我正在尝试从我的 perl 脚本执行 R 脚本。我需要将 R 脚本的输出捕获到 Perl 变量中。当我尝试从命令行单独执行 R 脚本时,它可以工作,这意味着 R 脚本工作正常。以下是我的 Perl 代码的一小部分。

#!/usr/local/perl
use strict;
use warnings;
my $base = `pwd`;
my $r_script= "Co-phen.R";
my $path='$base/$r_script';
      
save_R_env();

sub save_R_env {
    my $execute = `Rscript $path`;
    print $execute,"\n";
}

我没有得到 的结果$execute,也没有打印错误。

4

1 回答 1

4

单引号防止变量插值。使用双引号。

改变:

my $path='$base/$r_script';

到:

my $path="$base/$r_script";

也可以看看:

perldoc perlop

perlcritic也检测到这种类型的错误。

另外,你应该chomp

chomp $base;

解决方案:

use strict;
use warnings;
my $base = `pwd`;
chomp $base;
my $r_script= "Co-phen.R";
my $path="$base/$r_script";

save_R_env();

sub save_R_env {
    my $execute = `Rscript $path`;
    print $? if $?;
    print $execute,"\n";
}
于 2013-08-09T17:34:06.673 回答