如何从perl程序执行python代码并使用python代码的输出

时间:2015-07-06 00:52:21

标签: perl shell

我想从perl代码执行python脚本。我想将python输出保存到数组并从中获取一些数据。 Python脚本将在磁盘中进行一些搜索并找到我需要的文件。我将使用该输出并在我的下一个脚本中使用它。

我写了一些代码

use strict;
use warnings;
use Getopt::Long;
my $opt_section;
my $opt_content;
my $opt_ver;
my $opt_help = 0;

 &GetOptions (
"help"          => \$opt_help,
"section:s"        => \$opt_section,
"content:s"        => \$opt_content,
"ver:s"      => \$opt_ver,
);

if ($opt_help) {
print "USAGE: file.pl -section <section> -content <content> -ver <ver> \n ";

exit;}
###################python script stats here ################
 my $py = `/home/priya/library/bin/find.py -filter test~${opt_section}_priya_${opt_ver}` ;


    print "output is $py \n";

代码正在执行python脚本并在终端屏幕上显示输出。但它没有将输出存储到$ py。你可以请我把所有输出都指向数组或标量吗?后来我想使用python输出的每一行。

1 个答案:

答案 0 :(得分:1)

看起来好像find.py输出到STDERR。尝试使用2>&1将STDERR(文件句柄2)重定向到STDOUT(文件句柄1)并使用生成的行填充数组@python_output

my @python_output = qx(/home/priya/library/bin/find.py -filter test~${opt_section}_priya_${opt_ver} 2>&1);

有关如何在管道中纠缠STDERR和STDOUT的几个示例,请参阅http://perldoc.perl.org/perlop.html#qx%2f_STRING_%2f