Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

Re: Why "use of uninitialized value" warning comes?

by liverpole (Monsignor)
on Nov 01, 2006 at 15:07 UTC ( #581683=note: print w/replies, xml ) Need Help??

in reply to Why "use of uninitialized value" warning comes?

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:

last if ($need[$incr] || 0) eq '';

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.


Replies are listed 'Best First'.
Re^2: Why "use of uninitialized value" warning comes?
by ikegami (Patriarch) on Nov 01, 2006 at 16:49 UTC

    What if an element of @need was the nul string ("")? If you want to check if you've reached the end of the array, check if you've reached the end of the array.

    last if $incr == @need;

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://581683]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (2)
As of 2022-08-09 02:11 GMT
Find Nodes?
    Voting Booth?

    No recent polls found