解决方法
执行
执行命令并且从不返回。
它就像一个函数中的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上创建。