in reply to using warn instead or print STDERR?

I use warn, carp, etc for permanent assertions and unexpected/garbled runtime inputs and system conditions that need to be part of production code. I use print STDERR for temporary statements to peek into problem code. This makes it easy for me to do a search and replace (just search for STDERR) after I've diagnosed the problem.

For more permanent diagnostic abilities, I design my code so that repeatable test suites can "peek" at and verify the code's state. I find that more reliable than debugging by observation...and less work over the long run. Also it keeps the code uncluttered of assertions that only matter when debugging.

Best, beth