Perl支持运行外部程序的三种方式(我知道):
system
:
system PROGRAM LIST
如:
system "abc";
反推,如:
`abc`;
通过管道运行它,如:
open ABC, "abc|";
它们之间有什么区别?这就是我所知道的:
答案 0 :(得分:36)
此外,反引号将执行程序的STDOUT重定向到变量,系统将其发送到主程序的STDOUT。
答案 1 :(得分:3)
perlipc文档介绍了与Perl中其他进程交互的各种方法,perlfunc's open documentation解释了管道文件句柄。
还有一些模块可以通过跨平台边缘情况处理这些细节。
答案 2 :(得分:2)
系统还返回应用程序的退出值(Windows中的ERRORLEVEL)。 管道使用起来有点复杂,因为从它们读取并关闭它们会增加额外的代码。 最后,他们有不同的实现,这意味着做不同的事情。使用管道,您可以与执行的应用程序进行通信,而其他命令则不允许(轻松)。
答案 3 :(得分:1)
获取程序的退出状态不仅限于system()
。当您致电close(PIPE)
时,它会返回退出状态,您可以从$?
获取所有3种方法的最新退出状态。
请注意
readpipe('...')
与
相同`...`