我有一个 perl 脚本,它接受如下 2 个参数并根据参数调用适当的函数。我从 bash 调用这个脚本,但我想从 perl 调用它,可以吗?
/opt/sbin/script.pl --group="value1" --rule="value2";
脚本也以我想阅读的返回值退出。
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 );
. 如果您想要更大的灵活性,请查看文档以了解如何“手动”执行此操作。
如果要捕获输出:
$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>) ...
是的。您可以使用system
、exec
或<backticks>
。
system
和之间的主要区别在于exec
“exec
执行命令并且永不返回。
系统示例:
system("perl", "foo.pl", "arg");