Hi,
* [EMAIL PROTECTED] <[EMAIL PROTECTED]> [2002-07-23 11:26]:
> We are implementing mod_perl here for internal intranet use. We have
> discovered a possible buglet in CGI.pm.
>
> We do not want CGI.pm to return XHTML as it upsets Verity indexing
> (long story).
So sorry to hear about that.
> So in Apache::Registry executed scripts we use:
>
> use CGI qw( -no_xhtml );
>
> But on the first invocation it returns normal HTML. On second
> invocation it ignores this directive and returns XHTML. We started a
> dev server with -X to confirm this. It would appear CGI resets its
> globals somewhere.
>
> Can someone confirm this?
Yes:
From CGI.pm, version 2.81:
35 # >>>>> Here are some globals that you might want to adjust <<<<<<
36 sub initialize_globals {
37 # Set this to 1 to enable copious autoloader debugging messages
38 $AUTOLOAD_DEBUG = 0;
39
40 # Set this to 1 to generate XTML-compatible output
>> 41 $XHTML = 1;
42
43 # Change this to the preferred DTD to print in start_html()
44 # or use default_dtd('text of DTD to use');
45 $DEFAULT_DTD = [ '-//W3C//DTD HTML 4.01 Transitional//EN',
46 'http://www.w3.org/TR/html4/loose.dtd' ] ;
47
Judging from line 35 you might want to adjust some of those globals.
If you are using CGI in the OO way, you can just subclass CGI:
package My::CGI;
use base qw(CGI);
sub initialize_globals {
CGI::initialize_globals();
$CGI::XHTML = 0;
}
And then:
my $q = My::CGI->new;
Of course, I haven't tested this.
Another option is to call:
CGI->import("-no_xhtml");
at the top of your Registry script, which will be executed every time,
whereas the "use CGI qw( -no_xhtml );" is only being called at compile
time.
(darren)
--
You can put a man through school, but you cannot make him think.
-- Ben Harper