in reply to "warn" is your best friend
Since you mentioned Unicode: Many Perl programs these days set up STDOUT correctly to encode the output, but forget to the same with STDERR (and yes, I myself am guilty of this many times over).
So when debug-outputting non-ASCII strings to STDERR, you need to be extra aware of encoding issues.
(That said, when debugging encoding issues, I usually set $Data::Dumper::Useqq = 1 and debug with Data::Dumper, so it's not that much of an issue; but if you want to warn plain strings, you must be aware of it).
In Section Meditations