Best way to distinguish between mod_perl 1 and 2
I'm looking for the best, most reliable way to determine if I'm running under mod_perl 1 or 2, or not under mod_perl at all. I suppose I can look at $ENV{'MOD_PERL'}, but that reminds me a bit too much of a user-agent style opaque string that I may not be able to trust or predict. Also, what if I see "mod_perl/1.99" in that string? It just seems odd. So, any other suggestions? This needs to be code I can run even outside any mod_perl environment. I'll wrap it in an eval if I have to, but the low overhead of looking at $ENV{'MOD_PERL'} is kind of attractive... -John -- Report problems: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html List etiquette: http://perl.apache.org/maillist/email-etiquette.html
Re: Best way to distinguish between mod_perl 1 and 2
Are you looking for this: -->8-- use constant MP2 => ($mod_perl::VERSION >= 1.99_12); -->8-- Tom John Siracusa wrote: I'm looking for the best, most reliable way to determine if I'm running under mod_perl 1 or 2, or not under mod_perl at all. I suppose I can look at $ENV{'MOD_PERL'}, but that reminds me a bit too much of a user-agent style opaque string that I may not be able to trust or predict. Also, what if I see "mod_perl/1.99" in that string? It just seems odd. So, any other suggestions? This needs to be code I can run even outside any mod_perl environment. I'll wrap it in an eval if I have to, but the low overhead of looking at $ENV{'MOD_PERL'} is kind of attractive... -John Reclaim Your Inbox! http://www.mozilla.org/products/thunderbird -- Report problems: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html List etiquette: http://perl.apache.org/maillist/email-etiquette.html
Re: Best way to distinguish between mod_perl 1 and 2
Hi, !please always reply to the mailing list so the thread doesn't get broken! well mp uses this value internally and many CPAN-Modules do so either. Versions mp1 = VERSION < 1.99 mp2 = VERSION >= 1.99 The real syntax would be: ->8- use mod_perl; ## exists in mp1 and mp2 ## set the constant to 0 if mp1 and to 1 if mp2 ## but also subversions are working like this e.g. >= 1.99_12 which ## means the version the version must be at least 1.99_13 use constant MP2 => ($mod_perl::VERSION >= 1.99); BEGIN { if( MP2 ) { require Apache::Const; Apache::Const->import(-compile => 'HTTP_UNAUTHORIZED','HTTP_INTERNAL_SERVER_ERROR','DECLINED','HTTP_FORBIDDEN','OK'); } else { require Apache::Constants; Apache::Constants->import('HTTP_UNAUTHORIZED','HTTP_INTERNAL_SERVER_ERROR','DECLINED','HTTP_FORBIDDEN','OK'); } } ## proceed with your code ->8- Tom John Siracusa wrote: On Mon, 20 Sep 2004 21:19:58 +0200, Tom Schindl <[EMAIL PROTECTED]> wrote: Are you looking for this: -->8-- use constant MP2 => ($mod_perl::VERSION >= 1.99_12); -->8-- I don't know. What is that? :) Is that the "officially blessed" way to do this, or just another alternative that happens to work? Also, what's the equivalent for MP1? "$mod_perl::VERSION < 1.99_12"? -John -- Report problems: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html List etiquette: http://perl.apache.org/maillist/email-etiquette.html
Re: Best way to distinguish between mod_perl 1 and 2
On Mon, Sep 20, 2004 at 10:53:09PM +0200, Tom Schindl wrote: > Hi, > > !please always reply to the mailing list so the thread doesn't get broken! > > well mp uses this value internally and many CPAN-Modules do so either. > Versions > > mp1 = VERSION < 1.99 > mp2 = VERSION >= 1.99 > > The real syntax would be: > > ->8- > use mod_perl; ## exists in mp1 and mp2 > > ## set the constant to 0 if mp1 and to 1 if mp2 > ## but also subversions are working like this e.g. >= 1.99_12 which > ## means the version the version must be at least 1.99_13 > use constant MP2 => ($mod_perl::VERSION >= 1.99); > > BEGIN { > if( MP2 ) { > require Apache::Const; > Apache::Const->import(-compile => > 'HTTP_UNAUTHORIZED','HTTP_INTERNAL_SERVER_ERROR','DECLINED','HTTP_FORBIDDEN','OK'); > } else { > require Apache::Constants; > > Apache::Constants->import('HTTP_UNAUTHORIZED','HTTP_INTERNAL_SERVER_ERROR','DECLINED','HTTP_FORBIDDEN','OK'); > } > } > > ## proceed with your code > ->8- > > Tom > > > John Siracusa wrote: > >On Mon, 20 Sep 2004 21:19:58 +0200, Tom Schindl <[EMAIL PROTECTED]> wrote: > > > >>Are you looking for this: > >>-->8-- > >>use constant MP2 => ($mod_perl::VERSION >= 1.99_12); > >>-->8-- > > > > > >I don't know. What is that? :) Is that the "officially blessed" way > >to do this, or just another alternative that happens to work? Also, > >what's the equivalent for MP1? "$mod_perl::VERSION < 1.99_12"? > > > >-John I use the following, avoiding the need to pull in mod_perl.pm unless the MOD_PERL environment variable exists. use constant MOD_PERL => exists($::ENV{'MOD_PERL'}) ? (require('mod_perl.pm'), $mod_perl::VERSION >= 1.99) ? $mod_perl::VERSION : 1 : 0; and then the Perl optimizer will take care of optimizing away my simple tests for (MOD_PERL) == 0 (not mod_perl) (MOD_PERL) == 1 (mod_perl 1) (MOD_PERL) > 1 (value 1.99 and above for mod_perl 2 and above) Cheers, Glenn -- Report problems: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html List etiquette: http://perl.apache.org/maillist/email-etiquette.html
Re: Best way to distinguish between mod_perl 1 and 2
Tom Schindl wrote: Hi, !please always reply to the mailing list so the thread doesn't get broken! well mp uses this value internally and many CPAN-Modules do so either. Versions mp1 = VERSION < 1.99 mp2 = VERSION >= 1.99 The real syntax would be: ->8- use mod_perl; ## exists in mp1 and mp2 [...] save your fingers and post the URL instead :) http://perl.apache.org/docs/2.0/user/porting/porting.html#Porting_a_Module_to_Run_under_both_mod_perl_2_0_and_mod_perl_1_0 -- __ Stas BekmanJAm_pH --> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com -- Report problems: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html List etiquette: http://perl.apache.org/maillist/email-etiquette.html