Punctuation variables (and their English.pm equivalents) are global variables.
Messing with globals is dangerous in a complex program as it can lead to very subtle and hard to fix bugs.
If you must change a magic variable in a non-trivial program,
do it in a local scope.

For example,
to slurp a filehandle into a scalar,
it's common to set the record separator to undef instead of a newline.
If you choose to do this (instead of using File::Slurp!) then be sure to localize the global and change it for as short a time as possible.

This policy also allows the use of my. Perl prevents using my with "proper" punctuation variables, but allows $a, @ARGV, the names declared by English, etc. This is not a good coding practice, however it is not the concern of this specific policy to complain about that.