By declaring $oui_location with my, you've made it lexically scoped and unavailable to your other packages. There are a variety of strategies to deal with this. This simplest is to change package OUILookup:
$OUILookup::oui_location = "oui.txt";
When other code references this variable, simply refer to it with a fully qualified package name. However, global variables are usually a bad idea. You could use Exporter:
package Scrap::Foo; use strict; use Exporter; use vars qw/ @ISA @EXPORT $foobar /; @ISA = qw/Exporter/; @EXPORT = qw( $foobar ); $foobar = 7; sub doit { print $foobar; } 1
Then, in package main, I have the following:
use Scrap::Foo; use strict; $foobar = "Hello"; Scrap::Foo::doit;
That will print "Hello" instead of 7.
My suggestion, though, would be to create a set_oui_lookup() sub in your module. That's the cleanest solution.
Cheers,
Ovid
Vote for paco!
Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.
In reply to (Ovid) Re: Allowing user to change module variables
by Ovid
in thread Allowing user to change module variables
by mvaline
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |