Apache::RegistrUserdContributed Perl DocApache::RegistryLoader(3)NAMEApache::RegistryLoader - Compile Apache::Registry scripts
at server startup
SYNOPSIS
#in PerlScript
use Apache::RegistryLoader ();
my $r = Apache::RegistryLoader->new;
$r->handler($uri, $filename);
$r->handler($uri, $filename, $virtual_hostname);
DESCRIPTION
This modules allows compilation of Apache::Registry
scripts at server startup. The script's handler routine
is compiled by the parent server, of which children get a
copy. The Apache::RegistryLoader "handler" method takes
arguments of "uri" and the "filename". URI to filename
translation normally doesn't happen until HTTP request
time, so we're forced to roll our own translation.
If filename is omitted and a "trans" routine was not
defined, the loader will try using the uri relative to
ServerRoot. Example:
#in httpd.conf
ServerRoot /opt/www/apache
Alias /perl/ /opt/www/apache/perl
#in PerlScript
use Apache::RegistryLoader ();
#/opt/www/apache/perl/test.pl
#is the script loaded from disk here:
Apache::RegistryLoader->new->handler("/perl/test.pl");
To make the loader smarter about the uri->filename trans
lation, you may provide the "new" method with a "trans"
function to translate the uri to filename.
The following example will pre-load all files ending with
".pl" in the perl-scripts/ directory relative to Server
Root. The example code assumes the Location URI "/perl"
is an Alias to this directory.
{
use Cwd ();
use Apache::RegistryLoader ();
use DirHandle ();
use strict;
my $dir = Apache->server_root_relative("perl-scripts/");
my $rl = Apache::RegistryLoader->new(trans => sub {
my $uri = shift;
$uri =~ s:^/perl/:/perl-scripts/:;
return Apache->server_root_relative($uri);
});
my $dh = DirHandle->new($dir) or die $!;
for my $file ($dh->read) {
next unless $file =~ /\.pl$/;
$rl->handler("/perl/$file");
}
}
AUTHORS
Doug MacEachern
Stas Bekman (Rewrote the handler() to report and handle
all the possible erroneous conditions)
SEE ALSOApache::Registry(3), Apache(3), mod_perl(3)2000-03-03 mod_perl-1.27 Apache::RegistryLoader(3)