Perl的backticks,系统和exec有什么区别?

前端之家收集整理的这篇文章主要介绍了Perl的backticks,系统和exec有什么区别?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有人可以帮帮我吗?在Perl中,有什么区别:
exec "command";

system("command");

print `command`;

还有其他方法来运行shell命令吗?

解决方法

执行

执行命令并且从不返回。
它就像一个函数中的return语句。

如果没有找到命令,exec返回false。
它从不返回true,因为如果命令被发现它从来没有返回。
在返回STDOUT,STDERR或命令的退出状态时也没有意义。
你可以在perlfunc找到关于它的文档,
因为它是一个函数

系统

执行命令,并且在命令完成后继续执行Perl脚本。

返回值是命令的退出状态。
您可以在perlfunc找到有关它的文档。

反馈

like系统执行命令,并且在命令完成后继续执行perl脚本。

与系统相反,返回值是命令的STDOUT。
qx //等效于反引号。
你可以在perlop找到关于它的文档,因为不像system和execit是一个运算符。

其他方法

上面缺少的是异步执行命令的方法
这意味着你的perl脚本和你的命令同时运行。
这可以用open完成。
它允许您读取STDOUT / STDERR并写入您的命令的STDIN。
它是平台依赖。

还有几个模块可以缓解这个任务。有IPC :: Open2和IPC :: Open3和IPC :: Run,以及Win32 :: Process ::如果你在windows上创建。

猜你在找的Perl相关文章