如何从Perl调用python脚本?

时间:2011-06-14 07:37:58

标签: python perl

我需要使用Perl脚本中的少量参数调用“/usr/bin/pdf2txt.py”。我该怎么做?

4 个答案:

答案 0 :(得分:16)

如果您需要捕获 STDOUT

my $ret = `/usr/bin/pdf2txt.py arg1 arg2`;

您可以轻松捕获 STDERR 将其重定向到STDOUT:

my $ret = `/usr/bin/pdf2txt.py arg1 arg2 2>&1`;

如果您需要捕获退出状态,则可以使用:

my $ret = system("/usr/bin/pdf2txt.py arg1 arg2");

请记住,``system()都会阻止,直到程序完成执行。

如果您不想等待,或者您需要捕获STDOUT / STDERR和退出状态,那么您应该使用IPC::Open3

答案 1 :(得分:8)

my $output = `/usr/bin/pdf2txt.py arg1 arg2`;

答案 2 :(得分:2)

如果您不需要脚本输出,但想要返回代码,请使用system()

...
my $bin = "/usr/bin/pdf2txt.py";
my @args = qw(arg1 arg2 arg3);
my $cmd = "$bin ".join(" ", @args);

system ($cmd) == 0 or die "command was unable to run to completion:\n$cmd\n";

答案 3 :(得分:0)

Francisco的冷静回应:

my $ret = `/usr/bin/pdf2txt.py arg1 arg2 2>&1`;

由Blagovest Buyukliev简化:

my $ret = `/usr/bin/pdf2txt.py arg1 arg2`;

替代方法是

my $ret = system(/usr/bin/pdf2txt.py arg1 arg2`);

我认为不会起作用,因为输出被打印到屏幕上并且不会被$ret捕获