uninit - Warn about uninitialized variables
perl -Muninit myprogram
It's all very well being warned about the use of
undef if you don't know what variable it is that contains
undef, especially if you've got more than one variable in a line.
uninit attempts to do compile-time static checking of your program to see if any variables are used before they have any values assigned to them; it also reports which variable actually caused the problem.
It isn't guaranteed to catch all cases, and you can probably trick it with judicious use of
eval, but I can't do anything about that. It's only a guideline.