As the title says you can import a variable into a script or modulewithout using Exporter.pm. I have found it useful to keep all theconfiguration variables in one module My::Config. But then I haveto export all the variables in order to use them in other modules,which is bad for two reasons: polluting other packages' name spaceswith extra tags which increases the memory requirements; and addingthe overhead of keeping track of what variables should be exportedfrom the configuration module and what imported, for some particularpackage. I solve this problem by keeping all the variables in onehash %c and exporting that. Here is an example of My::Config:
use vars qw(%c);
%c = (
# All the configs go here
scalar_var => 5,
Now in packages that want to use the configuration variables I haveeither to use the fully qualified names like $My::Config::test,which I dislike or import them as described in the previous section.But hey, since I have only one variable to handle, I can make thingseven simpler and save the loading of the Exporter.pm package. Iwill use the Perl aliasing feature for exporting and saving thekeystrokes:
use lib qw(.);
# Global Configuration now aliased to global %c
use My::Config (); # My/Config.pm in the same dir as script.pl
use vars qw(%c);
*c = \%My::Config::c;
# Now you can access the variables from the My::Config
Of course $c is global everywhere you use it as described above, andif you change it somewhere it will affect any other packages you havealiased $My::Config::c to.
Note that aliases work either with global or local() vars - youcannot write:
my *c = \%My::Config::c; # ERROR!
Which is an error. But you can write:
local *c = \%My::Config::c;
For more information about aliasing, refer to the Camel book, secondedition, pages 51-52.