stas 2003/07/15 03:30:33 Modified: src/docs/2.0/user/config config.pod Log: add examples to demonstrate the difference between modperl and perl-script SetHandlers Revision Changes Path 1.40 +89 -0 modperl-docs/src/docs/2.0/user/config/config.pod Index: config.pod =================================================================== RCS file: /home/cvs/modperl-docs/src/docs/2.0/user/config/config.pod,v retrieving revision 1.39 retrieving revision 1.40 diff -u -r1.39 -r1.40 --- config.pod 23 May 2003 07:37:21 -0000 1.39 +++ config.pod 15 Jul 2003 10:30:33 -0000 1.40 @@ -293,6 +293,95 @@ =back +=head3 Examples + +Let's demonstrate the differences between the C<modperl> and the +C<perl-script> core handlers in the following example, which +represents a simple mod_perl response handler which prints out the +environment variables as seen by it: + + file:MyApache/PrintEnv1.pm + ----------------------- + package MyApache::PrintEnv1; + use strict; + + use Apache::RequestRec (); # for $r->content_type + use Apache::RequestIO (); # for print + use Apache::Const -compile => ':common'; + + sub handler { + my $r = shift; + + $r->content_type('text/plain'); + for (sort keys %ENV){ + print "$_ => $ENV{$_}\n"; + } + + return Apache::OK; + } + + 1; + +This is the required configuration: + + PerlModule MyApache::PrintEnv1 + <Location /print_env1> + SetHandler perl-script + PerlResponseHandler MyApache::PrintEnv1 + </Location> + +Now issue a request to I<http://localhost/print_env1> and you should +see all the environment variables printed out. + +Here is the same response handler, adjusted to work with the +C<modperl> core handler: + + file:MyApache/PrintEnv2.pm + ------------------------ + package MyApache::PrintEnv2; + use strict; + + use Apache::RequestRec (); # for $r->content_type + use Apache::RequestIO (); # for $r->print + + use Apache::Const -compile => ':common'; + + sub handler { + my $r = shift; + + $r->content_type('text/plain'); + $r->subprocess_env; + for (sort keys %ENV){ + $r->print("$_ => $ENV{$_}\n"); + } + + return Apache::OK; + } + + 1; + +The configuration now will look as: + + PerlModule MyApache::PrintEnv2 + <Location /print_env2> + SetHandler modperl + PerlResponseHandler MyApache::PrintEnv2 + </Location> + +C<MyApache::PrintEnv2> cannot use C<print()> and therefore uses +C<$r-E<gt>print()> to generate a response. Under the C<modperl> core +handler C<%ENV> is not populated by default, therefore +C<subprocess_env()> is called in a void context. Alternatively we +could configure this section to do: + + PerlOptions +SetupEnv + +If you issue a request to I<http://localhost/print_env2>, you should +see all the environment variables printed out as with +I<http://localhost/print_env1>. + + + =head2 C<PerlOptions> The directive C<PerlOptions> provides fine-grained configuration for
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]