SPUG:inconsistant perl -c
Brian Hatch
spug at ifokr.org
Thu Jan 30 16:37:19 CST 2003
To bring closure to my question, here is a set of modules that
would work both in a mod_perl Apache, and with 'perl -c':
$ cat BriOne.pm
use Apache;
use BriTwo;
$ cat BriTwo.pm
use Apache;
# Stuff to do at module load/compile time
sub dostuff {
my $s = Apache->server();
...
}
# Call it only if Apache->server() is defined.
# This only exists if we're running inside an
# apache process, not on the command line.
dostuff() if eval 'Apache->server()';
$ perl -c BriTwo.pm
BriTwo Syntax OK
$ perl -c BriOne.pm
BriOne Syntax OK
The problem is that Apache->server() returns the name of the
server itself, not based on any request. This is what I want,
because I want to load some skeleton HTML files off the file
system at module load time. The files are URL dependent (I
have a prod and a stage server, where the pathnames are
/web/URL/etc/etc/etc.)
So the hackish eval will catch if Apache->server() works
(discards the value - don't need it) and only calls the
sub if we're actually running.
This means all my 'perl -c' tests are accurate. Previously
they'd die when they hit this code, and I'd need to check
each module separately.
Thanks to the various folks who responded.
--
Brian Hatch Variables won't.
Systems and Constants aren't.
Security Engineer
http://www.ifokr.org/bri/
Every message PGP signed
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 240 bytes
Desc: not available
Url : http://mail.pm.org/pipermail/spug-list/attachments/20030130/c9b88ad6/attachment.bin
More information about the spug-list
mailing list