Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

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

by SparkeyG (Curate)
on Jan 03, 2002 at 22:42 UTC ( #136030=note: print w/ replies, xml ) Need Help??


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

Something I would use instead of your "eternal-block" would be:

do { #do stuff #More stuff #etc } until ( BREAK-CONDITION);
It strikes me as easier to understand what's going on at a quick glance.

--SparkeyG
Perl Programming Dad


Comment on Re: do/redo or for(;;): what's Kosher?
Download Code
Replies are listed 'Best First'.
Re: Re: do/redo or for(;;): what's Kosher?
by merlyn (Sage) on Jan 03, 2002 at 22:46 UTC
    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

      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")

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (10)
As of 2015-07-28 11:39 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 (254 votes), past polls