http://www.perlmonks.org?node_id=357058


in reply to Re: Why Doesn't each() DWIM?
in thread Why Doesn't each() DWIM?

Yea.

I am just wondering if there is a reason Perl won't do it for me? Why isn't there a little Do What I Mean in there.

Is there a technical reason why that piece of DWIMmery would be considered harmful at some edge case?

Replies are listed 'Best First'.
Re: Re: Re: Why Doesn't each() DWIM?
by duff (Parson) on May 27, 2004 at 21:46 UTC
    Perl already does what I mean in this case. If it did what you wanted, my expectations would be violated. Also, let's say that at the end of a loop the iterator on each() was reset, how would you get the behavior where it wasn't reset when you need it?
      how would you get the behavior where it wasn't reset when you need it?

      ++

      Good point

Re: Re: Re: Why Doesn't each() DWIM?
by jepri (Parson) on May 27, 2004 at 21:34 UTC
    Is there a technical reason why that piece of DWIMmery would be considered harmful at some edge case?

    I can think of one. Whether it is right or not is another matter :)

    There would be times when you wanted to return to your position in the hash. If the iterator (or hashkey pointer) was reset everytime the program left a control loop, you would have to save it in a variable and then restore it each time you went into another control structure.

    I don't see this as being a bad thing - other languages do it like this. I also don't know why it wasn't done this way rather than the way it currently is.

    Having said that, I have found this to be a problem before, but some careful data structure design worked around it just fine.

    ____________________
    Jeremy
    I didn't believe in evil until I dated it.