I've run into a situation where I need asynchronous access to the STDIN and STDOUT of a child process. In C, I'd use popen(), but this seems to have been omitted from perl :-)
The problem is that I need to feed a stream of data to the child, but at the same time listen for messages coming back from the child and respond to them by inserting replies into the outgoing data stream.
open2() and open3() won't help, as all input is required before any output is sent.