I have same question.And my solution:
1.In httpd.conf
PerlAddVar conf /home/httpd/site1/cgi-bin/configure.cgi
PerlAddVar conf /home/httpd/site2/cgi-bin/configure.cgi
PerlAddVar conf /home/httpd/site3/cgi-bin/configure.cgi
2.In your test.cgi
use vars qw(%conf);
my $site = $ENV{'HTTP_HOST'};
# get site1,site2,etc.
($site) = ($site =~ /^\/(.*?)\.some\.dom\/cgi-bin\/i);
use Apache;
my $r = Apache->request();
my @conf_file = $r->dir_config->get('conf');
foreach (@conf_file)
{
# import all site configuration file
require;
}
no strict qw(refs);
# import configure variable
# call by $conf{'SOME_VAR'};
*conf = \%{${"conf::".$site."::conf"}};
3.In your site1 configure.cgi,use ref of hash
package conf::site1;
$conf =
{
# web name.
'web_name' => 'site1',
# Parent web link.
'web_link' => 'http://site1.some.dom/',
}
# in different configure.cgi,have different configure variable and
package.
And ,Please referer http://perl.apache.org/guide/,and thanks stas and
other.
-Original Message-----
From: swade [mailto:[EMAIL PROTECTED]]
Sent: 2001Äê7ÔÂ2ÈÕ 13:18
To: [EMAIL PROTECTED]
Subject: requre,use, modules, namespace...I'm confused...
Hi,
I've read the docs on traps in using require and use, etc in
mod_perl...I'm confused
heres what I'm trying to figure out...
lets say I have 3 sites on 1 box. so I have /home/httpd/site1
/home/httpd/site2 /home/httpd/site3
each of them host the same scripts. so if my script is test.cgi
/home/httpd/site1/cgi-bin/test.cgi
/home/httpd/site2/cgi-bin/test.cgi
etc
Now without mod_perl I have a file called configure.cgi in
/home/httpd/site1/cgi-bin/configure.cgi
etc...for other sites. each configure script is setup differently
according to the site.
usually I would do, require "configure.cgi" in the test.cgi script; but
it's my understanding this won't work in mod_perl
what I'm trying to do is figure out how to have test.cgi the same...and
pull what it needs from the
configure file. So that when I update test.cgi I can ftp it to all the
sites without having to change it for
each site. For the life of me I cannot figure out how it's done in
mod_perl without having namespace problems...
I read that you should use a module, but then I understand you cannot
have modules with the same name. I read you could also give package name
in the configure.cgi script..like package config; Will that have the
same namespace problem? Is there some info on how to do this someone
could point me to?
thanks,
shawn