Ryan Thompson wrote:
Hi all,
I did a brief search of the archives, and the web, but found few ideas
that address this issue... which seems odd, because this is a very
common problem with typical mod_perl applications.
What I have is a large distributed mod_perl application, with many
packages strewn throughout a hierarchy of classes on the filesystem of
a server. This application code is either replicated to different
servers, or shared over a read-only NFS partition. Each server needs
to be able to set a small number of constant global options at compile
time, which should be stored in a configuration file on the local
filesystem.
So, is there an accepted, right way to suck in a local configuration
file at compile time? And, what's the best way to scope these
globals so that they are visible to the classes and subclasses in
the system that need to read them? I want to keep coupling to a
minimum, as there is a lot of reused and reusable code. Again, these
values can and should be considered immutable during execution.
RTFM answers gratefully accepted :-)
Not really a mod_perl question, but that's very simple:
MyLocalConfig.pm:
-
use vars qw(%c);
%c = (foo = 1, bar = {});
MyAppConfig.pm:
-
BEGIN { # you wanted compile time :)
use vars (%c);
require MyLocalConfig.pm
*c = \%MyLocalConfig::c;
}
now you can access %MyAppConfig::c everywhere in your apps.
This an other techniques are covered here:
http://perl.apache.org/guide/perl.html#Using_Global_Variables_and_Shari
BTW, in perl 'there is no right way', but TIMTOWTDI :)
_
Stas Bekman JAm_pH -- Just Another mod_perl Hacker
http://stason.org/ mod_perl Guide http://perl.apache.org/guide
mailto:[EMAIL PROTECTED] http://ticketmaster.com http://apacheweek.com
http://singlesheaven.com http://perl.apache.org http://perlmonth.com/