FWIW, those truly global variables are really all in the main package. The language parser acts as if those global variable names were prefixed with main:: if no package is specified, no matter what package directive is in scope at the time.
I know that. An amusing side-effect is that if someone
mistakenly tries to throw an our on, say, $_ and they are
in any package other than main::, it will not work as they
expect.