in reply to Basic-- Error

Is there some reason that you are not saying "use strict;" at the top of your program? "use strict;" forces you to declare your variables before you use them and hence catches typos in your variable names. It is even possible that the UNDEFINED error you are getting is the result of a typo.

"use strict;" tells you what line the typo appears on. I have heard it said that one should always place "use strict;" at the top of one's programs.

Yes, it can be a pain to declare variables first, but it is always worth it in the long run. As my idol Nature Boy Flair used to say:

Learn to like it, learn to live with it, learn to love it, because it is going to be that way for a long time. Whooo!