有人可以帮帮我吗?在 Perl 中,以下之间有什么区别:
exec "command";
and
system("command");
and
print `command`;
还有其他方法可以运行 shell 命令吗?
exec
执行命令并一去不复返。
这就像一个return
函数中的语句。
如果没有找到该命令exec
返回假。
它永远不会返回 true,因为如果找到该命令,它就根本不会返回。
回来也没有意义STDOUT
, STDERR
或命令的退出状态。
您可以在以下位置找到有关它的文档perlfunc http://perldoc.perl.org/functions/exec.html,
因为它是一个函数。
system
执行命令,并且 Perl 脚本在命令完成后继续。
返回值是命令的退出状态。
您可以在以下位置找到有关它的文档perlfunc http://perldoc.perl.org/functions/system.html.
反引号
like system
执行命令,并且在命令完成后继续执行 Perl 脚本。
相反system
返回值为STDOUT
命令的。qx//
相当于反引号。
您可以在以下位置找到有关它的文档perlop http://perldoc.perl.org/perlop.html#Quote-Like-Operators,因为不像system
and exec
它是一个运算符。
其他方法
上面缺少的是一种异步执行命令的方法。
这意味着您的 perl 脚本和命令同时运行。
这可以通过以下方式完成open http://perldoc.perl.org/functions/open.html。
它可以让你阅读STDOUT
/STDERR
并写信给STDIN
你的命令。
但它依赖于平台。
还有几个模块可以减轻这项任务。
有IPC::Open2
and IPC::Open3
and IPC::Run
, 也Win32::Process::Create
如果你在Windows上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)