in reply to exiting a if loop

The if statement already works in the manner that you have asked for. A cut down version of your code below shows how this works:

if(HOLIDAY){ $check = TRUE; } elsif ( $time <= 1800){ $check = TRUE; }
This does what you asked for and as you can see you don't need the exit statements. Perl evaluates the "if/else if" statements in turn until one of the conditions is true. It then executes the block immediately following that statement and then jumps to the end of the entire conditional. Thus it only does the "first" conditional block that it can. Several other languages don't work that way (c's switch statement for instance needs breaks) and that may have confused you, but Perl already does what you want by default.

You realise of course that you example you gave can be written more succintly as:

$check = TRUE if ((HOLIDAY) or ($time <= 1800))
If this hasn't covered the whole subject to your satisfaction, if you post more of what you're trying to do then we can elaborate.

update As le and flyfishing have pointed out I got the else if thing wrong. I've changed the node so that it reads properly.

Nuance

Baldrick, you wouldn't see a subtle plan if it painted itself purple and danced naked on top of a harpsichord, singing "Subtle plans are here again!"

Replies are listed 'Best First'.
RE: Re: exiting a if loop
by le (Friar) on Jun 06, 2000 at 18:11 UTC
    I guess that should be
    if(HOLIDAY){ $check = TRUE; } elsif ( $time <= 1800){ $check = TRUE; }
      Which is basically what I wrote, what with white space being irrelevant and all. Hey this isn't Python :-)

      Lets face it:

      if(HOLIDAY){$check = TRUE;} elsif ( $time <= 1800){$check = TRUE;}
      Would also work, even if it is slightly less readable

      Nuance

      Baldrick, you wouldn't see a subtle plan if it painted itself purple and danced naked on top of a harpsichord, singing "Subtle plans are here again!"

        I believe he was referring to the use of else if. There is no else if in Perl, you use elsif.
RE: Re: exiting a if loop
by turnstep (Parson) on Jun 06, 2000 at 21:37 UTC

    > You realise of course that you example you gave
    > can be written more succintly as:

    > $check = "TRUE" if ((HOLIDAY) or ($time <= 1800))

    For more succinctness, leave out the parens:

    $check = TRUE if $HOLIDAY or $time<=1800;