in reply to
When -w and use strict aren't enough...
without having to write a test suite that exercises every code branch, which isn't always (or even usually) possible.
Quite the contrary. In a well-maintained system, a test suite that tests every code branch is mandatory
. And as they say, "you can pay me now, or you can pay me later" with respect to testing.
Your code should be designed so that testing every branch is possible.
If you're writing code that's hard to test, you can't test it, and therefore
it's quite possible that some bug will show up in the future. Bad code, Bad code, what you gonna do?
Read Test::Tutorial. Learn how to write tests, and you'll gradually start writing code that can always be tested.