我需要从我的 Perl 脚本中使用少量参数调用 "/usr/bin/pdf2txt.py",我该如何做?
如果您需要捕获 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");
如果您不想等待,或者您需要捕获STDOUT / STDERR和退出状态,则应使用IPC :: Open3 。
my $output = `/usr/bin/pdf2txt.py arg1 arg2`;
如果您不需要脚本的输出,但希望获取返回码,请使用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";
@args
。使用 system $bin, @args;
- 这样可以避免许多潜在的有害漏洞。 - friedo如果你想实时查看输出而不是等到脚本运行结束,可以在 python 后面加上-u。例如:
my $ret = system("python -u pdf2txt.py arg1 arg2");
system '/usr/bin/pdf2txt.py', $arg1, $arg2
,因为这样可以避免与Shell插值相关的问题(和危险的错误)。 - friedo$?
来捕获STDOUT
和退出状态。 例如:my $output = `/usr/bin/pdf2txt.py arg1 arg2 2>&1`;
my $ret = $?;
- Simon Pickup