在 Perl 脚本的中间,有一个我想要执行的系统命令。我有一个字符串,其中包含需要输入 stdin 的数据(该命令只接受来自 stdin 的输入),我需要捕获写入 stdout 的输出。我查看了在 Perl 中执行系统命令的各种方法,以及 open
function 似乎是我所需要的,只是看起来我只能捕获 stdin 或 stdout,而不能同时捕获两者。
目前,似乎我最好的解决方案是使用 open
,将 stdout 重定向到临时文件,并在命令完成后从文件中读取。有更好的解决方案吗?
最佳答案
IPC::Open2/3 很好,但我发现通常我真正需要的是 IPC::Run3 ,它以最小的复杂性很好地处理了简单的情况:
use IPC::Run3; # Exports run3() by default
run3( \@cmd, \$in, \$out, \$err );
该文档将 IPC::Run3 与其他替代方案进行了比较。即使您不决定使用它,也值得一读。
关于perl - 如何从 Perl 脚本捕获系统命令的标准输入和标准输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/78091/