Necesito llamar “/usr/bin/pdf2txt.py” con algunos argumentos de mi script de Perl. Cómo debería hacer esto ?
Si necesita capturar STDOUT :
my $ret = `/usr/bin/pdf2txt.py arg1 arg2`;
Puede capturar fácilmente STDERR redirigiéndolo a STDOUT:
my $ret = `/usr/bin/pdf2txt.py arg1 arg2 2>&1`;
Si necesita capturar el estado de salida , puede utilizar:
my $ret = system("/usr/bin/pdf2txt.py arg1 arg2");
Tenga en cuenta que tanto ``
como system()
bloquean hasta que el progtwig termina de ejecutarse.
Si no desea esperar, o si necesita capturar tanto el estado STDOUT / STDERR como el estado de salida, debe usar IPC :: Open3 .
my $output = `/usr/bin/pdf2txt.py arg1 arg2`;
Si no necesita la salida del script, pero desea el código de retorno, use 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";
La buena respuesta de Francisco:
my $ret = `/usr/bin/pdf2txt.py arg1 arg2 2>&1`;
es simplificado por Blagovest Buyukliev:
my $ret = `/usr/bin/pdf2txt.py arg1 arg2`;
La alternativa es,
my $ret = system(/usr/bin/pdf2txt.py arg1 arg2`);
No creo que funcione porque la salida se imprime en la pantalla y no se captura por $ret