in reply to Help with perl syntax

merlyn has lead you to the best way to do this, namely constructing a regex that looks for the beginning of a line, zero or more whitespace characters, the octothorpe, and absolutely no exclamation point.

Your double-regex check would work if you put multiple conditions in your if or unless statements. It's not the best option in this case, but it will work in other situations:

next READ if (/^\s*#/ and !(/^\s*#!/));

With the and (or &&), both conditions have to be true. The second is negated (with the leading !), so it achieves the same thing as the single regex.

Replies are listed 'Best First'.
RE: Re: Help with perl syntax
by zzspectrez (Hermit) on Oct 29, 2000 at 03:33 UTC

    merlyn's solution is the better way to do it, I agree.

    I like your solution as well, I didnt think of using negation within the if construct.

    More than anything, I was just trying to figure out how perl would handle me combining if and unless within one statement.
    Like I did with:

    unless (/^#!/) {next READ if (/^\s*#/)};

    And how although that works the following does not work and perl proceeds to give an error:

    if (/^\s*#/) { next READ } unless (/^#!/);

    By looking at perl code from others I have seen how perl is flexible in how you structure things. You are not forced into a specific way of doing it such as the following.

    if (/^\s*#/) { next READ }

    Can be easily written:

    next READ if (/^\s*#/);

    I'm still unsure of how perl will handle certain structures. For example I would have coded the above example the first way thinking perl would of complained about the structure of the second.

    THANKS!
    zzspectrez