in reply to Re: Match all Non-0 and Letters
in thread Match all Non-0 and Letters

... this was just to explain the error in your code ... /0{7}\d/ is much simpler and better.

I understand that the intended purpose of the code example is very limited, but I think it's very important to point out that the
    $D1 !~ /0+/
test ("if there is not at least one '0' in the first 7 digits") is also a fundamental error.


Give a man a fish:  <%-{-{-{-<

Replies are listed 'Best First'.
Re^3: Match all Non-0 and Letters
by Laurent_R (Canon) on Jun 24, 2017 at 17:58 UTC
    Yes, AnomalousMonk, you're right. I wanted to point out the logical error ("and" instead of "or" in the conditional), but you're absolutely right that the regexes should also be fixed.

    Perhaps something like:

    print "Word $Disc is corrupt!\n" if $D1 !~ /^0{7}$/ or $D2 !~ /[0-9]/;
    And the first part of the conditional could actually be replaced by a string inequality operator rather than a regex:
    print "Word $Disc is corrupt!\n" if ($D1 ne '0' x 7) or $D2 !~ /[0-9]/ +;
    Update: s/instead or "or"/instead of "or"/;. Thanks to Discipulus for pointing out the typo.
      ... the first part of the conditional could actually be replaced by a string inequality ...

      That's what I was thinking, but my idea was  $D1 ne '0000000' :)


      Give a man a fish:  <%-{-{-{-<