You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by pi...@goldfisch.at on 2002/09/24 23:14:02 UTC
modules and pragmas - part II
Thnx for all the people contributing in the previous thread which gave
me deeper insight and a very easy solution ($CGI::XHTML = 0;)
But now I played around and found out that if loading a modules with
pragmas this pragma only is valid for the first call and not valid for
all further call.
I wrote a tiny script to show this:
------
#!/usr/bin/perl -w
use CGI qw(standard -no_xhtml);
my $q=new CGI;
print $q->header,$q->start_html,"\n";
print $$,"\n";
------
At the first request each instance prints out the no_xhtml-header, but
at the second call the no_xhtml-pragma is forgotten and the
xhtml-header is printed out.
Is this a problem in the CGI-module or is there a deeper reason for
this in mod_perl ?
btw and OT : in the previous thread there have been rumours about
better things than the CGI-module. What could you recommend instead ?
(compatible modules prefered cause I really use the sticky- and
nostickyfeatures :)
thnx,
peter
--
mag. peter pilsl
IT-Consulting
tel: +43-699-1-3574035
fax: +43-699-4-3574035
pilsl@goldfisch.at
Re: modules and pragmas - part II
Posted by Rick Myers <ri...@sumthin.nu>.
On Sep 24, 2002 at 23:14:02 +0200, pilsl@goldfisch.at wrote:
>
> At the first request each instance prints out the no_xhtml-header, but
> at the second call the no_xhtml-pragma is forgotten and the
> xhtml-header is printed out.
>
> Is this a problem in the CGI-module or is there a deeper reason for
> this in mod_perl ?
The problem lies in CGI.pm itself. It installs a cleanup
handler which resets $CGI::XHTML to 1 after each request...
sub new {
....
Apache->request->register_cleanup(\&CGI::_reset_globals);
....
}
sub _reset_globals { initialize_globals() };
sub initialize_globals {
....
$XHTML = 1;
....
}
So you'll need to set $CGI::XHTML=0 every time you call
CGI->new to get it to work right.
--rick
Re: modules and pragmas - part II
Posted by pi...@goldfisch.at.
On Wed, Sep 25, 2002 at 12:29:12AM -0400, Perrin Harkins wrote:
>
> Are you setting $CGI::XHTML to 0 somewhere?
>
No I posted the whole script:
------------
#!/usr/bin/perl -w
use CGI qw(standard -no_xhtml);
my $q=new CGI;
print $q->header,$q->start_html,"\n";
print $$,"\n";
------------
thnx,
peter
--
mag. peter pilsl
IT-Consulting
tel: +43-699-1-3574035
fax: +43-699-4-3574035
pilsl@goldfisch.at
Re: modules and pragmas - part II
Posted by Perrin Harkins <pe...@elem.com>.
pilsl@goldfisch.at wrote:
> At the first request each instance prints out the no_xhtml-header, but
> at the second call the no_xhtml-pragma is forgotten and the
> xhtml-header is printed out.
Are you setting $CGI::XHTML to 0 somewhere?
> btw and OT : in the previous thread there have been rumours about
> better things than the CGI-module. What could you recommend instead ?
> (compatible modules prefered cause I really use the sticky- and
> nostickyfeatures :)
There are many. The most compatible is CGI::Simple. If you need CGI
stuff but not the HTML generation, you can use Apache::Request or CGI_Lite.
- Perrin