in reply to "use vars" vs. "our" or Strict after the fact
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.
|
|---|