in reply to "use vars" vs. "our" or Strict after the fact

As someone who migrated a medium-sized PERL app to "use strict", I've got a few gimmes and gotchas to share:

1) You're going to have to change all your for/each loops. Things like "foreach $foo (@bar)" have to become "foreach my $foo (@bar)" and the like. Don't forget that:
for ($i = 0; $i < $n; $i++) {
becomes
 for (my $i = 0; $i < $n; $i++) {

2) Consider using packages like the following:

package Foo; use Exporter; @ISA = qw(Exporter); @EXPORT_OK = qw(Access_Global); my $some_global_variable = 1; sub Access_Global { return $some_global_variable++; } package Bar; use Foo qw(Access_Global); ... my $some_var = Access_Global;

That way, you have your "global variable", but access it in a very controlled, not-really-global manner. We've got a number of those, such as volatile IDs for triggers, and this works like a charm.

3) Re-evaluate WHY you want that global. Maybe you're making an assumption as to why something should be global. Maybe it's better to pass it in as a command-line argument. Maybe you only use it in one place. I dunno. We removed some 20% of our global variables by simply realizing we didn't need them.