in reply to Avoiding silly programming mistakes

I have ,c aliased to :!perl -wc %^V^M in vim. My fingers know that sequence better than they know any other sequence, and they should - I obsessively type it every 3-5 lines I type and every 2-3 lines I edit. ALWAYS. My template is:
package XXX; use strict; use warnings FATAL => 'all'; 1; __END__
(Yes - every single piece of code I write has warnings throwing fatal errors.)

What these two practices do make it very easy to find the lines that have caused any problem. They would have made it very easy to find your error and they make it very easy to find other errors, too.

There's a number of other practices that help as well, but those are for another post.

My criteria for good software:
  1. Does it work?
  2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?