|Think about Loose Coupling|
Re: CGI.pm Caching Issueby btrott (Parson)
|on May 11, 2000 at 21:54 UTC||Need Help??|
Are you running under mod_perl or PerlEx?
From a quick glance at the CGI.pm source, it looks like it calls _reset_globals for each new object, if you're running under either of those architectures (mod_perl or PerlEx). Since I believe both of them work similarly--ie. compiling a Perl interpreter into the web server and pre-compiling modules--this would imply that when you're doing "similar" things (only compiling CGI.pm once, or using persistent CGI objects), you'll need to call _reset_globals.
Ah, here it is: this is why you're getting that behavior. In the init subroutine, there's this code:
So this is initializing your object with the original query, rather than the new (and possibly different) one.
And what does _reset_globals do? It calls initialize_globals, which does this:
There you go. In persistent situations, then, (mod_perl or PerlEx), CGI.pm needs to clean up @QUERY_PARAM--you'll need to fake this in your persistent application, then.
Calling initialize_globals would be another option--plus it's not "private" (no "_"). :)