Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask

Re: mod_perl and CGI behavior

by davebaker (Pilgrim)
on Sep 25, 2020 at 19:49 UTC ( [id://11122215]=note: print w/replies, xml ) Need Help??

in reply to mod_perl and CGI behavior

Haven't tested this yet as to whether it makes a difference, but I see you've imported various "standard" functions from by including :standard in the "use CGI qw(:standard);" statement. Because you're using in its object-oriented style (my $cgi = CGI->new() etc.), you don't need to do that, and you might be better off with "use CGI;" instead.

Replies are listed 'Best First'.
Re^2: mod_perl and CGI behavior
by naChoZ (Curate) on Sep 25, 2020 at 20:50 UTC

    Unfortunately it seems deeper than that.

    Looking at the code over on github here, you can see that the ->new method checks if mod_perl is being used and, if it is, gives you back an object with the request attached to it, and all that stuff...

    But, regardless, I dumbed down the script to just...

    #!/perl/bin/perl use strict; use warnings; use Data::Dumper::Names; use CGI; use Apache2::Connection (); use Apache2::RequestRec (); $| = 1; my $header = CGI::header(); print STDERR Dumper($header);

    ...and it still outputs just...

    $header = '';


      Yes, something going on at line 1617 of at github, inside sub "header" --
      if (($MOD_PERL >= 1) && !$nph) { $self->r->send_cgi_header($header); return ''; }
      which explains the empty set being returned, after it's invoked a "send_cgi_header" mod_perl method that seems to be designed to take the place of sub "header" as a practical matter.

        Interesting. That did the trick actually. So this test code...

        my $test_header = $cgi->header( -type => 'application/xml' ); ddump('test_header', __LINE__, $test_header); my $another_test_header = $cgi->header( -nph => 1, -type => 'application/xml' ); ddump('another_test_header', __LINE__, $another_test_header);

        ...produced the following debug output...

        $test_header_line_673_1 = ''; $another_test_header_line_680_1 = 'HTTP/1.1 200 OK Server: Apache/2.4.34 (Red Hat) OpenSSL/1.0.2k-fips mod_perl/2.0.11 Pe +rl/v5.22.4 Date: Wed, 07 Oct 2020 21:53:46 GMT Content-Type: application/xml; charset=ISO-8859-1 ';


        Interesting. I wonder what that nph (no parsed header) business ends up doing... I'll have to experiment with that.



Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11122215]
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others exploiting the Monastery: (2)
As of 2024-05-27 06:28 GMT
Find Nodes?
    Voting Booth?

    No recent polls found