First- Did you include -w or use warnings?
These catch a huge number of problems:
typos in variable names
using uninitialized variables as if they were initialized
statements simply parsing in a way different than you expected
warnings definitely make code easier to debug.