Re: Coding Style Question - Using exit

2003-08-19 Thread Thomas Klausner
Hi!

On Mon, Aug 18, 2003 at 08:07:30 -0400, Chris Faust wrote:

 Example To Help Explain:
 
 sub handler {
  $r = shift;
 
 init_global_vals();
 
 $back_url = determine_proper_action();
 
 my $back_url = ;
 $r-headers_out-set(Location = $back_url);

 return Apache::REDIRECT;
 }

Why not let determine_proper_action() return undef (or OK, or whatever) if
you do not want to redirect? And in your handler do:

  my $rv=determine_proper_action();
  if ($rv) {  # or ($rv == Apache::Constants::OK)
 # redirect
  } else 
# done
  }

One problem I can see is if you're exiting somewhere deep in a nested sub
and you cannot propagate the return value back to the handler (easily).


-- 
#!/usr/bin/perl   http://domm.zsi.at
for(ref bless{},just'another'perl'hacker){s-:+-$-gprint$_.$/}


-- 
Reporting bugs: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html



Re: Coding Style Question - Using exit

2003-08-19 Thread Chris Faust
Thanks for the reply Thomas,

 Why not let determine_proper_action() return undef (or OK, or whatever) if
 you do not want to redirect? And in your handler do:

   my $rv=determine_proper_action();
   if ($rv) {  # or ($rv == Apache::Constants::OK)
  # redirect
   } else
 # done
   }

 One problem I can see is if you're exiting somewhere deep in a nested sub
 and you cannot propagate the return value back to the handler (easily).



That seems to be working well, I've changed that part of the handler to:

**
 ($request_type,$back_url) = determine_proper_action();

 # Properly Exit the Handler from all subs within Determine Proper Action
 if ($request_type eq 'Apache::REDIRECT') {
  $r-headers_out-set(Location = $back_url);
return Apache::REDIRECT;
 } else {
  return Apache::OK;
 }
*
Then in every sub within determine_proper_action I'm returning either
Apache::OK or Apache::REDIRECT.

Still got a lot of testing to do, but so far I've been able to get rid of
all exits from my script!

Thanks
-Chris




-- 
Reporting bugs: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html