http://qs321.pair.com?node_id=11122220


in reply to Re: mod_perl and CGI behavior
in thread mod_perl and CGI behavior

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

Replies are listed 'Best First'.
Re^3: mod_perl and CGI behavior
by davebaker (Pilgrim) on Sep 30, 2020 at 20:32 UTC
    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

        Congratulations, Andy, and thanks for sharing the detailed test code and output. I haven't used ddump but that aspect of your post is very helpful and interesting to me.

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

      Thanks!

      --
      Andy