I was on the lookout for a simple module that can exec a command and return STDOUT and STDERR in two different scalars. Working with IPC::Open3 and other similar modules simply did not cut in.
Finally I stumbled upon this wonderful module that did exactly what I needed. More importantly it is very easy to use and anyone who had used qx would simple feel at home with this module.
I am creating a framework for automated test execution and this module lies at the heart of it all helping me capture STDOUT and STDERR for each and every command that ever get launched through my framework.
Moreover, whenever I had any query the author was more than willing to help me.
Quoting the POD: "This module provides routines for capturing STDOUT and STDERR from forked system calls .... [and is] able to trap output from subprocesses and C code, which traditional 'tie()' methods are unable to capture...."
It does it simply and successfully, and is highly recommended.
This is the only output capturing module I've ever seen that *doesn't* use tied handles, but instead uses a more robust approach with temporary files. As a result, it can capture output from perl code, XS and external processes. The interface is clean and well documented. I wish I'd known about this a long time ago.