|Pathologically Eclectic Rubbish Lister|
There's an idiom I often use when I want to ignore undefined values: ($variable || 0).
You could use that in your code like this:
Simply put, that means: "last if $need[$incr] is undefined -or false".
It works well when you want to temporarily map undefined values to false for the purposes of a test.
Update: Having said that, I want to point out that what others have said above about your for(;;) loop is correct, it is unconventional, and might give you problems if you were iterating over a list which potentially had false values in it. It's important that you understand why you are getting any warnings, and only "workaround" them once you're convinced that it's appropriate to do so.
In reply to Re: Why "use of uninitialized value" warning comes?