有人可以帮帮我吗?在 Perl 中,有什么区别:
exec "command";
和
system("command");
print `command`;
还有其他方法可以运行 shell 命令吗?
执行命令并且 永不返回 。这就像return函数中的语句。
return
如果找不到该命令,则exec返回 false。它永远不会返回 true,因为如果找到该命令,它就永远不会返回。STDOUT命令的返回或STDERR退出状态也没有意义。您可以在 中找到有关它的文档 perlfunc ,因为它是一个函数。
exec
STDOUT
STDERR
perlfunc
执行命令,并且在命令完成后继续执行您的 Perl 脚本。
返回值是命令的退出状态。您可以在 中找到有关它的文档 perlfunc 。
likesystem执行命令,并且在命令完成后继续执行您的 perl 脚本。
system
system 与返回值相反的是STDOUT命令。 qx//相当于反引号。您可以在 中找到有关它的文档 perlop ,因为与它不同的是system,exec它是一个运算符。
qx//
perlop
上面缺少的是一种异步执行命令的方法。这意味着您的 perl 脚本和您的命令同时运行。这可以通过 open. 它允许您读取STDOUT/STDERR写入STDIN您的命令。虽然它依赖于平台。
open
STDIN
还有几个模块可以简化此任务。有IPC::Open2和IPC::Open3,IPC::Run就像 Win32::Process::Create你在窗户上一样。
IPC::Open2
IPC::Open3
IPC::Run
Win32::Process::Create