First- Does it include -w or use warnings?
use warnings catches 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