We always disable this policy. The reason is that constants are more resourceful than
ReadOnly implemented variables.
perl interpreter does a good job of optimizing out code, which should not be run, so for example a debug flag implemented as a constant does actually mean that debugging code does not weigh down execution on production if set to a false value.
B::Terse can show us how the debug section is optimized away:
The same two cases, implemented using ReadOnly.
As you can see the version using proper constants is producing a lot shorter with
DEBUG enabled output that the ones with
DEBUG disabled or implemented using
See also: Explanation on PerlMonks.