我正在尝试从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
没有结果,也没有错误打印。
答案 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";
}