It isn't a runtime error - the interpreter has parsed the code and bombed out with out even executing the first line of your script. perl -d is a good test -- does the error get trapped by the interpreter before offering you the first executable line of your code for step execution?