如何使用返回值的参数从Python Perl脚本调用?

时间:2016-06-07 17:13:31

标签: python perl

我想用我的Python程序中的参数调用Perl脚本。 到目前为止,我已经能够使用子进程和管道

来做到这一点
#!/usr/bin/python
import subprocess
var = "world"
pipe = subprocess.Popen(["./x.pl", var], stdout=subprocess.PIPE)
result = pipe.stdout.read()
print result

#!/usr/bin/perl
use strict;
use warnings;
my $name = shift;
print "Hello $name!\n";

但正如这个名字所说,它只是管道输出。

我需要的是Perl脚本返回一些值(例如这里它将返回字符串而不是打印)并且Python捕获该值并使用它。

我需要这样做,因为Perl脚本已经存在,我正在尝试将它从CGI(每个调用返回一个值)转换为Python(Websocket服务器充当客户端和脚本之间的代理)

1 个答案:

答案 0 :(得分:3)

就个人而言,我根本不会改变Perl脚本。它已经设计用于处理来自其父进程的请求并通过stdout返回其响应。只需为它提供适当的CGI环境。

如果要返回传输更复杂的结构,则需要对其进行序列化。 JSON通常是最好的选择。

#!/usr/bin/perl
use strict;
use warnings;
use JSON::XS qw( encode_json );
my $name = shift;
print encode_json({ code => 200, content => "Hello, World!\n" });