Как вызвать скрипт на Python из Perl? - PullRequest
14 голосов
/ 14 июня 2011

Мне нужно вызвать «/usr/bin/pdf2txt.py» с несколькими аргументами из моего скрипта Perl.Как мне это сделать?

Ответы [ 4 ]

16 голосов
/ 14 июня 2011

Если вам нужно захватить 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 .

8 голосов
/ 14 июня 2011
my $output = `/usr/bin/pdf2txt.py arg1 arg2`;
2 голосов
/ 14 июня 2011

Если вам не нужен вывод скрипта, но вы хотите получить код возврата, используйте 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";
0 голосов
/ 11 ноября 2018

Крутой ответ Франциско:

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

упрощен Благовестом Буюклиевым:

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

Альтернатива:

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

Не думаю, чтоработать, потому что вывод печатается на экран и не будет зафиксирован $ret

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...