in reply to Catch messages to STDERR

Easier than that, wherever you want to capture:

{ open local(*STDERR), '>>', $filespec or die $!; # go on and do things close STDERR or die $!; }
You can change the open call to a piped process or, in 5.8, a reference to a variable.

Update: ++Corion picked up a typo in the code, corrected.

After Compline,
Zaxo