Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re: Re: do/redo or for(;;): what's Kosher?

by merlyn (Sage)
on Jan 03, 2002 at 22:46 UTC ( #136038=note: print w/ replies, xml ) Need Help??


in reply to Re: do/redo or for(;;): what's Kosher?
in thread do/redo or for(;;): what's Kosher?

That would be fine, except last/next/redo don't respect that as a "loop" because that's not a real loop-block. That's why I came up with the other version: it's a lean, mean, looping machine!

-- Randal L. Schwartz, Perl hacker


Comment on Re: Re: do/redo or for(;;): what's Kosher?
Replies are listed 'Best First'.
Re(3): do/redo or for(;;): what's Kosher?
by dmmiller2k (Chaplain) on Jan 04, 2002 at 21:27 UTC

    Just curious. Why would you prefer this:

    { # do stuff last if BREAK-CONDITION; redo; }

    to this:

    { # do stuff redo if !BREAK-CONDITION; }

    or even (just to be pedantic),

    { # do stuff redo unless BREAK-CONDITION; }

    dmm

      I'm pretty sure that the reason is:

      { # do loop stuff to be done at least once last if BREAK-CONDITION; # do middle loop stuff <<< This part was left out redo; }
      which I'd still use while(1) for. Plus it allows you to do:
      { # read next line last if NoMoreLines # extract item from line redo if NoItemInLine last if EndOfItemListFound # categorize item redo if WrongItemCategory # check for updates redo if NoUpdatesThisCategory; # check permissions last if NoUpdatesAllowed; redo if ThisUpdateNotAllowed; # do update redo if NotFatal; # handle fatal error # (note, no "redo" here so this part isn't really # part of the "loop", just stuff to do once unless # "last" gets triggered above.) } # done with items
      where it is very easy to throw in a new check or new code in. But, as I said elsewhere, I find that power to be too easy to abuse. YMMV.

              - tye (but my friends call me "Tye")

        Ah, in that context, I see where this approach could be useful.

        I think I agree with you, though, that the while (1) (with scattered nexts in place of redos) accomplishes the same thing in a more self-explanatory way.

        dmm

        You can give a man a fish and feed him for a day ...
        Or, you can
        teach him to fish and feed him for a lifetime

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (17)
As of 2015-07-30 16:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (273 votes), past polls