0

我有一个 perl 脚本,它接受如下 2 个参数并根据参数调用适当的函数。我从 bash 调用这个脚本,但我想从 perl 调用它,可以吗?

/opt/sbin/script.pl --group="value1" --rule="value2";

脚本也以我想阅读的返回值退出。

4

3 回答 3

5

sh命令的 Perl 等价物

/opt/sbin/script.pl --group="value1" --rule="value2"

system('/opt/sbin/script.pl', '--group=value1', '--rule=value2');

您也可以使用以下命令在 shell 中启动该命令,但我会避免这样做:

system(q{/opt/sbin/script.pl --group="value1" --rule="value2"});

就像您必须在 中做的那样sh,您必须跟进一些错误检查(无论您采用哪种方法)。您可以使用use autodie qw( system );. 如果您想要更大的灵活性,请查看文档以了解如何“手动”执行此操作。

于 2013-09-13T16:52:41.840 回答
3

如果要捕获输出:

$foo = `/opt/sbin/script.pl --group="value1" --rule="value2"`;

如果要捕获退出状态,但将 script.pl 的输出发送到标准输出:

$status = system "/opt/sbin/script.pl --group=value1 --rule=value2";

如果您想从文件中读取其输出:

open SCRIPT, "/opt/sbin/script.pl --group=value1 --rule=value2 |" or die $!;
while (<SCRIPT>) ...
于 2013-09-13T16:51:47.117 回答
1

是的。您可以使用systemexec<backticks>

system和之间的主要区别在于execexec执行命令并且永不返回。

系统示例:

system("perl", "foo.pl", "arg");
于 2013-09-13T16:53:04.737 回答