in reply to Catch messages to STDERR

Maybe you could use the __WARN__ signal.
Something like...
$SIG{__WARN__} = sub { SomeModule::errhandler(@_); };
Now all warn, carp and cluck commands should get routed through this code.