This might be a good place to mention test-suites like Test::More. Get into the habit of building test-suites for your code as you develop it. It can be rather ridiculous just how many errors creep into “a simple bit of code that you just whipped out.” I wrote just such a “little module” last week and, wouldn’t ya know it, every one of the methods had one or more bugs in it.
I also painfully learned this maxim, and so never forgot it during all the many years since:
“Code defensively. Put self-checks into your code as you write it. Check every parameter, test every assumption. Keep them there until you are positive that there are no more bugs. Then, and only then ... keep them there (forever).”