"To capture output from a command, use backticks or qx// instead."
Update: I seem to have misread the question, the way I read it would have been a simple split operation an any output. Being ESL, it didn't sink in that the poster wanted to split up STDERR and STDOUT. My mistake, thanks fot the spanking :)
"Nothing is sure but death and taxes" I say combine the two and its death to all taxes!
Thanks for that - note however that in addition to capturing STDOUT/STDERR, I still need to have the STDIN/STDOUT/STDERR of the external program connected to the terminal where the person is running the script, in case the external program requires input from the user, and so that any output is immediately visible to the user, in addition to being saved in the scalar(s).
I'll try your recommendation out though - maybe it does give me what I want.
For STDIN/-ERR, just print the output to the appropriate handles yourself. For STDIN, if you have taken control of the subprocesses STDIN yourself, just copy the user input in there yourself. You can do that "realtime" rather than post mortem by passing closures rather scalar refs, if memory serves.