How to call a python script from Perl?

前端 未结 4 1060
逝去的感伤
逝去的感伤 2020-12-14 10:09

I need to call \"/usr/bin/pdf2txt.py\" with few arguments from my Perl script. How should i do this ?

相关标签:
4条回答
  • 2020-12-14 10:21

    If you need to capture STDOUT:

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

    You can easily capture STDERR redirecting it to STDOUT:

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

    If you need to capture the exit status, then you can use:

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

    Take in mind that both `` and system() block until the program finishes execution.

    If you don't want to wait, or you need to capture both STDOUT/STDERR and exit status, then you should use IPC::Open3.

    0 讨论(0)
  • 2020-12-14 10:26

    If you don't need the script output, but you want the return code, 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";
    
    0 讨论(0)
  • 2020-12-14 10:26

    Francisco's cool response:

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

    is simplified by Blagovest Buyukliev:

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

    The alternative is,

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

    I don't think will work because the output is printed onto the screen and will not be captured by $ret

    0 讨论(0)
  • 2020-12-14 10:30
    my $output = `/usr/bin/pdf2txt.py arg1 arg2`;
    
    0 讨论(0)
提交回复
热议问题