in reply to Capturing STDERR using IO::Handle

You are suffering from a little confusion. The fdopen method doesn't associate some other filehandle with your IO::Handle; it's the other way around: after the fdopen, your $stderr will be associated with whatever STDERR was before (only with the incorrect 'r' mode).

To capture STDERR of a system call, you'd want the stderr output to go to some temporary file and then (rewind if necessary and) read from the file.