从perl调用perl脚本

时间:2013-09-13 16:44:08

标签: perl bash shell

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

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

此外,脚本将以我想要阅读的返回值退出。

3 个答案:

答案 0 :(得分:5)

Perl等效于sh命令

/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 );执行此操作。如果您想要更灵活,请“{3}}”手动“检查”{/ 3>

答案 1 :(得分:3)

如果要捕获输出:

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

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

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

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

open SCRIPT, "/opt/sbin/script.pl --group=value1 --rule=value2 |" or die $!;
while (<SCRIPT>) ...

答案 2 :(得分:1)

是。您可以使用systemexec<backticks>

systemexec之间的主要区别在于exec“执行命令而永不返回。

系统示例:

system("perl", "foo.pl", "arg");