从Perl执行R脚本

时间:2013-08-09 17:23:47

标签: r perl

我正在尝试从perl脚本执行R脚本,我需要将R脚本的输出捕获到perl变量中。当我尝试从命令行单独执行R-srcipt它工作,这意味着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没有结果,也没有错误打印。

1 个答案:

答案 0 :(得分:4)

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

变化:

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

为:

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

另见:

perldoc perlop

perlcritic也会检测到此类错误。

此外,您应该chomp

chomp $base;

第3次错误:$rscript而不是$r_script

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";
}