Apache::RegistryLoader(3) User Contributed Perl Documentation
NAME
Apache::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 translation, 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 ServerRoot. 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 ALSO
Apache::Registry(3), Apache(3), mod_perl(3)
perl v5.8.8 2000-03-30 Apache::RegistryLoader(3)
Mac OS X 10.5 Server - Generated Sun Jun 15 13:42:43 CDT 2008
