in reply to Impact of special variables on regex match performance

FWIW: I agree with you that the affects of just the presence of these variables, even when buried in some module you are unknowingly loading through n-levels of indirection can be both dramatic and profoundly frustrating. Documentation notwithstanding, the fact that you can be bitten by it despite studiously avoiding them is a pretty bad indictment.

One tip that I didn't see referenced, is to check your code with Devel::SawAmpersand. The module POD also offers some good advice and workarounds.

Personally, I think that this should issue a mandatory (compiler) warning that would require specific action to suppress. And that suppression should be overridden by -W to allow for quick checks of heavily nested modules.

It would certainly be more useful to me than many of the existing warnings. This particularly useless one for instance:

$x = 123;; $y = '123';; print $x | 'fred';; Argument "fred" isn't numeric in bitwise or (|) at (eval 8) 123 print $y | 'fred';; wrwd

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.