如何在 Perl 中通过反引号或系统获取文本
我想在 Perl 中调用一个 EXE 文件,它执行一些操作
我尝试通过 backtick
和 system
调用 exe 文件,但在这两种情况下我只得到返回值
exe文件将一些文本打印到控制台上。是否也可以捕获它?
我查看了这个变量 ${^CHILD_ERROR_NATIVE}
但我只得到返回值而不是文本
我正在使用 Perl 5.14
提前致谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
应用程序可能不会将其输出打印到
STDOUT
,而是打印到STDERR
,而反引号运算符不会捕获该输出。要捕获两者,您可以使用以下命令:为了进行更精细的捕获,您可能需要求助于
IPC ::Open3
,您可以使用它“控制”进程的所有流(<code>IN、OUT
和ERR
)。The application might not print its output to
STDOUT
butSTDERR
instead, which isn't captured by the backtick operator. To capture both, you could use the following:For a more fine-tuned capturing, you might want to resort to
IPC::Open3
with which you can "control" all of a process' streams (IN
,OUT
andERR
).我曾经从 perl 脚本执行命令并以这种方式捕获输出
检查它是否对您有帮助
I used to execute commands from perl script and capture the output this way
Check whether it helps you
我推荐 capture 和
capture_err
函数rel="nofollow">Scriptalicious。I recommend the
capture
andcapture_err
functions from Scriptalicious.