in reply to Capturing STDERR with -

I haven't tested it but, a quick glance through CPAN came up with IPC::ChildSafe. This allows the opening of another shell, controlled by the caller. Output from the new shell can then be read back into the caller.

$japh->{'Caillte'} = $me;