Negative look-behinds have to be fixed-width so you can't use them here because the number of characters in front of "use|require" before you hit the "#" that you don't want to match isn't going to be constant.
I don't understand why you want to match "use++this" so perhaps you want to replace [\s\+]+ with simply \s+ ?
I don't see a lot of point in matching \s*[^;]*;. You can certainly shorten it to [^;]*; or .*?; (the second form can be a problem if you later add to the end of the regex). But I'd probably just drop it and allow for the ";" being dropped for various reasons.
The suggestion of /^[^#]*(use|require)... is pretty good but I'd at least add \b and prohibit quoted strings in in front: /^[^#'"q]*\b(use|require)... I'd might even just assume nothing but whitespace in front /^\s*(use|require)... but worry that someone might write BEGIN { require... for some reason.
Note also that you can require "config.pl" or even require $x, but those probably aren't the type of stuff you want to report anyway. (:
- tye (but my friends call me "Tye")In reply to (tye)Re: Is this the time for a negative lookbehind?
by tye
in thread Is this the time for a negative lookbehind?
by patgas
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |