You will be happy to know that you're wrong. In fact, that they all refer to
$main::foo is going to be a saving grace for you. :-)
Consider this:
- You create a module called Globals.pm
- It inherits from Exporter
- You do a global find for all references to $main::foo
- You replace all those with references to the exported variable $foo
- You run the program and it breaks somewhere during compilation (cause you wisely turned on strict).
- You track those last buggers down within an hour or two.
Then, once they're all in one module, you can start the refactoring with an idea of how bad the situation really is. It could be as simple as under 100 variables or it could be 1000's. You simply don't know right now.
As for modules ... CPAN modules don't use %main:: and vendor-supplied modules don't use %main::. (Well, if the latter do, then the vendor should go out of business, proving my point. *grins*) So, you shouldn't have to patch over every time for these. In-house modules ... well, shoot the author and you're good. :-)
------
We are the carpenters and bricklayers of the Information Age.
Don't go borrowing trouble. For programmers, this means Worry only about what you need to implement.