Home arrow Perl Programming arrow Page 5 - Introduction to mod_perl (part 2): mod_perl Quickstart

The "mod_perl rules" Apache Perl Module - Perl

Last week you found out all sorts of good things about mod_perl, but you may be wondering how you get started using it. Let this article be your guide.

  1. Introduction to mod_perl (part 2): mod_perl Quickstart
  2. Installing mod_perl Detailed
  3. Configuring and Starting mod_perl Server
  4. The "mod_perl rules" Apache::Registry Script
  5. The "mod_perl rules" Apache Perl Module
  6. Is This All I Need to Know About mod_perl?
  7. Acknowledgements
  8. References
By: Stas Bekman
Rating: starstarstarstarstar / 2
May 07, 2002

print this article


mod_perl is about running both scripts and handlers. Although I have started to present mod_perl using scripts because it's easier if you have written CGI scripts before, the more advanced use of mod_perl is about writing handlers. But have no fear. As you will see in a moment, writing handlers is almost as easy as writing scripts.

To create a mod_perl handler module, all I have to do is to wrap the code I have used for the script into a handler subroutine, add a statement to return the status to the server when the subroutine has successfully completed, and append a package declaration at the top of the code.

Just as with scripts you can use either the CGI API you are probably used to (save the following as Rules1.pm):

package ModPerl::Rules1; use Apache::Constants qw(:common); sub handler{ print "Content-type: text/plain\r\n\r\n"; print "mod_perl rules!\n"; return OK; } 1; # satisfy require()
or the Apache Perl API that allows you to interact more intimately with the Apache core by providing an API unavailable under regular Perl. Of course in the simple example that I show, using any of the approaches is fine, but when you need to use the API, this version of the code should be used (save as Rules2.pm):

package ModPerl::Rules2; use Apache::Constants qw(:common); sub handler{ my $r = shift; $r->send_http_header('text/plain'); print "mod_perl rules!\n"; return OK; } 1; # satisfy require()
Create a directory called ModPerl under one of the directories in @INC (e.g. /usr/lib/perl5/site_perl/5.005), and put Rules1.pm Rules2.pm into it, the files should include the code from the above examples.

To find out what the @INC directories are, execute:

% perl -le 'print join "\n", @INC'
On my machine it reports:

/usr/lib/perl5/5.6.1/i386-linux /usr/lib/perl5/5.6.1/usr/lib/perl5/site_perl/5.6.1/i386-linux/usr/lib/perl5/site_perl/5.6.1/usr/lib/perl5/site_perl.
Now add the following snippet to httpd.conf to configure mod_perl to execute the ModPerl::Rules::handler subroutine whenever a request to mod_perl_rules1 is made:

PerlModule ModPerl::Rules1 <Location /mod_perl_rules1> SetHandler perl-script PerlHandler ModPerl::Rules1 </Location>
Now you can issue a request to:


and just as with our mod_perl_rules.pl scripts you will see:

mod_perl rules!
as the response.

To test the second module ModPerl::Rules2 add the sameconfiguration, while replacing all 1's with 2's:
PerlModule ModPerl::Rules2<Location /mod_perl_rules2>  
SetHandler perl-script  

And to test use the URI:


>>> More Perl Programming Articles          >>> More By Stas Bekman

blog comments powered by Disqus
escort Bursa Bursa escort Antalya eskort


- Perl Turns 25
- Lists and Arguments in Perl
- Variables and Arguments in Perl
- Understanding Scope and Packages in Perl
- Arguments and Return Values in Perl
- Invoking Perl Subroutines and Functions
- Subroutines and Functions in Perl
- Perl Basics: Writing and Debugging Programs
- Structure and Statements in Perl
- First Steps in Perl
- Completing Regular Expression Basics
- Modifiers, Boundaries, and Regular Expressio...
- Quantifiers and Other Regular Expression Bas...
- Parsing and Regular Expression Basics
- Hash Functions

Developer Shed Affiliates


Dev Shed Tutorial Topics: