in reply to Is this the time for a negative lookbehind?

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