perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Fred Moyer <f...@taperfriendlymusic.org>
Subject Re: read query params
Date Fri, 10 Feb 2006 05:32:03 GMT
M J wrote:
>     I’m very disappointed  regarding the mod_perl 2 documentation and changes that
have been made.
>       I’m  searching for several hours already how can I read the query params using
only  mod_perl2 API.
>       I had  problem installing libapreq2-2.06-dev and I’m tired to debug that library.
>       I want to  use mod_perl2 API to do the simplest job possible: read the parameters
sent using  GET or POST. I am looping around and I did not find a clear example or  explanation
regarding this.
>       I can use  $r->args() but then I need to split that string in order to get my
param  value. I doubt that this is a good solution.

The reference you are looking for is here:

http://perl.apache.org/docs/2.0/user/porting/compat.html#C__r_E_gt_args__in_an_Array_Context

It's buried a bit deep, so maybe a cooking recipe or two could be added 
- this seems to be a common issue for mp2.

If you can't install libapreq2, there are still several options.  You 
could use CGI which has compatible with mod_perl2.  If you are looking 
for some sample code maybe this will work (untested).  It logs the 
arguments received to the apache error log.

----------------------------------------

Your request:

http://servername/postaway/?param=value

or the equivalent POST

----------------------------

In your httpd.conf:

LoadModule perl_module modules/mod_perl.so
PerRequire "/path/to/startup.pl"
<Location /postaway>
    SetHandler perl-script
    PerlResponseHandler My::CGI
</Location>

----------------------

In startup.pl

use strict;
use warnings;

use lib 'path/to/my/lib'
use CGI;
use Apache2::Const ();
use Apache2::Log   ();
use Apache2::RequestRec ();  # Not sure if you need the next two 		 
                         # explicitly but I think CGI may require it
use Apache2::RequestUtil ();

--------------------

In lib/My/CGI.pm

package My::CGI;

use strict;
use warnings;

use Apache2::Const -compile => qw( OK );
use Apache2::Log;
use Apache2::RequestRec;
use Apache2::RequestUtil;
use CGI;

sub handler {

   my $r = shift;

   my $cgi = CGI->new;
   my $q = $cgi->query;

   foreach my $name ( $q->param ) {
     $r->log->info("Passed a param named $name with value " .
       $q->param($name));
   }

   return Apache2::Const::OK;
}

>       P.S.
>       With the  modification that you made for mod_perl2 you will loose a lot of perl
 programmer and I doubt that you will get new ones.
>        
>       M J

Mime
View raw message