I'm using primary module for config variables etc.. like this..
package SA::Config;
use strict;
BEGIN {
require Exporter;
@SA::Config::ISA = qw(Exporter);
@SA::Config::EXPORT = qw(%c);
}
our %c = (
var1 => '/blah',
logDir => '/var/log'
);
1;
then in your scripts :
use SA::Config qw(%c);
This way i.e when storing as HASH u don't clutter
the namespace and config variable usage is easy spotted..
Faster way can be also to place all your virables in file
and then "require" them, but this has some disadvantages..
(One more thing i do is separate utilities functions into
separate Utils.pm module..).
Other thing that comes to my mind :") along these lines is
to use different name spaces f.e. :
Project1::Config
Project2::Config
... etc..
this way u can have common lib directory for all your projects w/o having problem between them..