2013-08-09 2 views
1

Я пытаюсь выполнить скрипт R из моего скрипта perl, мне нужно записать вывод сценария R в переменную perl. когда я пытаюсь выполнить R-srcipt отдельно из командной строки, он работает, то есть R-скрипт работает нормально. Ниже приведен небольшой раздел моего кода Perl.Выполнение скрипта 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

'perldoc -v '$?' И' print $? if $ ?; ' – toolic

ответ

4

Одиночные кавычки предотвращают переменную интерполяцию. Используйте двойные кавычки.

Изменение:

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

к:

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

Смотрите также:

perldoc perlop 

Этот тип ошибки также обнаружен perlcritic.

Кроме того, вы должны chomp:

chomp $base; 

третья ошибка: $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"; 
} 
+0

Я получаю следующую ошибку после изменения $ path =" $ base/$ r_script "sh: строка 1: /Co-phen.R: Нет такого файла или каталога – Mdhale

+2

См. мое обновление о' chomp'. – toolic

+0

Chomp сделал трюк. Спасибо :) Также я изменил $ rscript на $ r_script, это была опечатка во время публикации. – Mdhale

Смежные вопросы