in reply to Why does Config.pm break the rules?

Is it just to maintain backwards compatibility...

I would say not just for backward compatibility

There are times when global definitions are needed for an environment which will be different in a different environment... For example, we run three different environments for one website. Development, Test and Production. Apart from code that is being written or tested, they are identical except for a configuration file which contains nothing but global variable definitions of things that vary between environments (and comments so we know what they all are!). One such difference is which database schema each environment connects to, another is whether live emails should be sent to users, and so on.

Config.pm is a similar situation

For completeness, we don't export the variables. We declare them with our scope and access them with a fully qualified namespace definition. But we could get the same effect by exporting them instead ass all the variables have names that reflect their globalness.