我有一个perl脚本,它接受如下两个参数,并根据参数调用适当的函数。我从bash调用这个脚本,但我想从perl调用它,是否可能?
/opt/sbin/script.pl --group="value1" --rule="value2";
此外,脚本将以我想要阅读的返回值退出。
答案 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)
是。您可以使用system
,exec
或<backticks>
。
system
和exec
之间的主要区别在于exec
“执行命令而永不返回。
系统示例:
system("perl", "foo.pl", "arg");