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 $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 に答える