in reply to how to declare a package variable

A "my" variable has lexical scope. There could be a bunch of "my" variables of the same name (eg my $couter;) within a script, each referencing a different distinct variable depending upon the scope. No "my" variable can be referenced by another module.

An "our" variable goes into the module's symbol table is essentially global - there can be only one. These are seen only rarely.

I am not sure what happens in ancient code like this. I suppose that there could be the idea of a global that is not in the symbol table? In that case these are "different" variables, one limited globally to the package and one that can be referenced by other packages. A "my variable" declared in the right scope is also "global" to the compilation unit. But an "our" variable can be visible to other separately compiled modules.