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