You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by cfaust-dougot <cf...@doyougot.com> on 2005/04/30 15:27:16 UTC

Code fix/suggestion after MP2 update

Folks,
 
I hope my brain is just not functioning properly yet as its Saturday, but I'm having a tough time figuring out the best way to handle the needed changed of "Apache::*" to  "Apache2::Const*" automatically so I don't have to edit anything with a script going up on 2 different servers with 2 the 2 different MP2 installs.
 
The code that was effected for me was simple enough, all my handler's are just:
 
 
sub handler {
 $r = shift;
 
 my $request_type  = anything
 
 if ($request_type eq 'Apache::REDIRECT') {
  $r->headers_out->set(Location => $back_url);
     #return Apache2::Const::REDIRECT;
    # or
     return Apache::REDIRECT;
 } else {
  #return Apache::OK;
  # or
 return Apache2::Const::OK;
 }
 
}
 
I thought it would be nice and easy to do it with a PerlSetVar in the conf file, so I would have something like
 
in conf:
PerlSetVar ApacheReturnRedirect Apache::REDIRECT
PerlSet....
 
In handler
  if ($request_type eq 'Apache::REDIRECT') {
   $r->headers_out->set(Location => $back_url);
      return $r->dir_config->get('ApacheReturnRedirect');
  } else {
   return $r->dir_config->get('ApacheReturnOk');
  }

But that didn't work, got an error of Argument "Apache::REDIRECT" isn't numeric, I also can't do it within any sort of "if" statement in the script itself as I will get the error of "Apache::* not allowed while script subs...".
 
Any suggestions?
 
Thanks In Advance!
-Chris
 

Re: Code fix/suggestion after MP2 update

Posted by Stas Bekman <st...@stason.org>.
cfaust-dougot wrote:
> Folks,
>  
> I hope my brain is just not functioning properly yet as its Saturday, but I'm having a tough time figuring out the best way to handle the needed changed of "Apache::*" to  "Apache2::Const*" automatically so I don't have to edit anything with a script going up on 2 different servers with 2 the 2 different MP2 installs.
>  
> The code that was effected for me was simple enough, all my handler's are just:
>  
>  
> sub handler {
>  $r = shift;
>  
>  my $request_type  = anything
>  
>  if ($request_type eq 'Apache::REDIRECT') {
>   $r->headers_out->set(Location => $back_url);
>      #return Apache2::Const::REDIRECT;
>     # or
>      return Apache::REDIRECT;
>  } else {
>   #return Apache::OK;
>   # or
>  return Apache2::Const::OK;
>  }
>  
> }
>  
> I thought it would be nice and easy to do it with a PerlSetVar in the conf file, so I would have something like
>  
> in conf:
> PerlSetVar ApacheReturnRedirect Apache::REDIRECT
> PerlSet....
>  
> In handler
>   if ($request_type eq 'Apache::REDIRECT') {
>    $r->headers_out->set(Location => $back_url);
>       return $r->dir_config->get('ApacheReturnRedirect');
>   } else {
>    return $r->dir_config->get('ApacheReturnOk');
>   }
> 
> But that didn't work, got an error of Argument "Apache::REDIRECT" isn't numeric, I also can't do it within any sort of "if" statement in the script itself as I will get the error of "Apache::* not allowed while script subs...".
>  
> Any suggestions?

That's funky :) But you can't do that. Since those constants are really 
subroutines. What you are returning are strings, so you will need to eval 
those before using those. The best run the script that will adjust the 
constants: http://people.apache.org/~geoff/fixme

-- 
__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com