Apache::RegistryLoader - Compile Apache::Registry scripts at server startup
#in PerlScript use Apache::RegistryLoader (); my $r = Apache::RegistryLoader->new; $r->handler($uri, $filename);
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.
handler
uri
filename
If filename is omitted and a trans routine was not defined, the loader will try using the uri relative to ServerRoot. Example:
trans
#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.
new
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.
.pl
/perl
{ 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"); } }
Doug MacEachern
Apache::Registry(3), Apache(3), mod_perl(3)
To install mod_perl, copy and paste the appropriate command in to your terminal.
cpanm
cpanm mod_perl
CPAN shell
perl -MCPAN -e shell install mod_perl
For more information on module installation, please visit the detailed CPAN module installation guide.