Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

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 CGI.pm by including :standard in the "use CGI qw(:standard);" statement. Because you're using CGI.pm 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 = '';

    --
    Andy

      Yes, something going on at line 1617 of CGI.pm 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 ';

        --
        Andy

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

        Thanks!

        --
        Andy

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others scrutinizing the Monastery: (4)
As of 2025-06-16 22:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.