Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: Re: Re: Re: Re: CamelTrouble

by hossman (Prior)
on Apr 13, 2004 at 17:41 UTC ( #344808=note: print w/replies, xml ) Need Help??


in reply to Re: Re: Re: Re: CamelTrouble
in thread CamelTrouble

That's certainly a valid solution, but of course TMTOWTDI

As for why the code produced the error in the first place, you are starting with an array of N elements, and you are iterating over a list of the indexes of the elements in that array. But while you iterate over those elements, you are deleting them from the orriginal array, which shortens it, but you've still got the indexes, so as you get to the end of your list of indexes, the last few indexes may not exist in the array anymore.

Ie: if $#good_ones is 9, and the camel picks up $good_ones5 and you splice it out of the list, then when that foreach loop reaches 9, $good_ones9, it's going to be undef (because it's off the end of the array)

Another valid solution would be to change your foreach(0..$#good_ones) to for(my $_=0;$_<=$#good_ones;), and only increment $_ if you do NOT splice the array. In that case, $#good_ones will be evaluated on each pass of the loop, and it will do the right thing as the array gets shorter and shorter.

Replies are listed 'Best First'.
Re: Re: Re: Re: Re: Re: CamelTrouble
by mawe (Hermit) on Apr 14, 2004 at 05:48 UTC
    Great explanation! Now even I can unerstand it ;-) Thank you!! (And thanks for your patience!)

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (5)
As of 2020-10-30 10:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My favourite web site is:












    Results (278 votes). Check out past polls.

    Notices?