ADC Home > Reference Library > Reference > Mac OS X > Mac OS X Man Pages

 

This document is a Mac OS X manual page. Manual pages are a command-line technology for providing documentation. You can view these manual pages locally using the man(1) command. These manual pages come from many different sources, and thus, have a variety of writing styles.

This manual page is associated with Mac OS X Server. It is not available on standard Mac OS X (client) installations.

For more information about the manual page format, see the manual page for manpages(5).



cgi_to_mod_perl(3)                   User Contributed Perl Documentation                  cgi_to_mod_perl(3)



NAME
       cgi_to_mod_perl - First steps needed to use mod_perl as a CGI replacement

DESCRIPTION
       As the README and other mod_perl documents explain, mod_perl as a CGI replacement is only a small
       piece of what the package offers.  However, it is the most popular use of mod_perl, this document is
       here so you can cut to the chase.

INSTALLATION
       Read the INSTALL document, in most cases, nothing more is required than:

        perl Makefile.PL && make && make install

CONFIGURATION
       For using mod_perl as a CGI replacement, the recommended configuration is as follows:

        Alias /perl/  /real/path/to/perl-scripts/

        <Location /perl>
        SetHandler  perl-script
        PerlHandler Apache::Registry
        Options +ExecCGI
        </Location>

       `Location' refers to the uri, not a directory, think of the above as

        <Location http://www.yourname.com/perl

       Any files under that location (which live on your filesystem under /real/path/to/perl-scripts/), will
       be handled by the Apache::Registry module, which emulates the CGI environment.  The file must exist
       and be executable, in addition,  'Options ExecCGI' must be turned on.

       If you wish to have mod_perl execute scripts in any location based on file extension, use a
       configuration like so:

        <Files ~ "\.pl$">
        SetHandler perl-script
        PerlHandler Apache::Registry
        Options ExecCGI
        </Files>

       Note that `ScriptAlias' does _not_ work for mod_perl.

PORTING CGI SCRIPTS
       I/O If you are using Perl 5.004 most CGI scripts can run under mod_perl untouched.  If you're using
           5.003, Perl's built-in "read()" and "print()" functions do not work as they do under CGI.  If
           you're using CGI.pm, use "$query->print" instead of plain 'ol "print()".

       HEADERS
           By default, mod_perl does not send any headers by itself, however, you may wish to change this:

               PerlSendHeader On

           Now the response line and common headers will be sent as they are by mod_cgi.  And, just as with
           mod_cgi, PerlSendHeader will not send a terminating newline, your script must send that itself,
           e.g.:

            print "Content-type: text/html\n\n";

           If you're using CGI.pm and 'print $q->header' you do _not_ need "PerlSendHeader On".

       NPH SCRIPTS
           To run a CGI `nph' script under mod_perl, simply add to your code:

            local $| = 1;

           If you normally set PerlSendHeader On, add this to your httpd.conf:

            <Files */nph-*>
            PerlSendHeader Off
            </Files>

       PROGRAMMING PRACTICE
           CGI lets you get away with sloppy programming, mod_perl does not.  Why?  CGI scripts have the
           lifetime of a single HTTP request as a separate process.  When the request is over, the process
           goes away and everything is cleaned up for you, e.g. globals variables, open files, etc.  Scripts
           running under mod_perl have a longer lifetime, over several request, different scripts may be in
           the same process.  This means you must clean up after yourself.  You've heard:

            always 'use strict' and C<-w>!!!

           It's more important under mod_perl Perl than anywhere else, while it's not required, it strongly
           recommended, it will save you more time in the long run.  And, of course, clean scripts will
           still run under CGI!

       TRAPS
           See mod_perl_traps.

REPORTING PROBLEMS
       Read the SUPPORT file.

SEE ALSO
       Apache::PerlRun(3)



perl v5.8.8                                      2003-10-08                               cgi_to_mod_perl(3)

Did this document help you?
Yes: Tell us what works for you.
It’s good, but: Report typos, inaccuracies, and so forth.
It wasn’t helpful: Tell us what would have helped.