You are viewing a plain text version of this content. The canonical link for it is here.
Posted to embperl@perl.apache.org by Neil Gunton <ne...@nilspace.com> on 2001/03/04 22:34:51 UTC

Re: Stop processing script upon die

Gerald,

Would it be worth considering an [$ exit $] command in Embperl that
would stop all processing at that point, even if the command is in a
file which is executed from another? Currently, if you call the Perl
exit() function then it only seems to exit from the current file, but
the parent will continue. It seems like a common pattern to want to
cease all processing, even if you are in a child file or subroutine. Or,
is there a cleaner way to do it (using the existing version) than the
one I suggested below?

TIA

-Neil

"Marcus R. Popetz" wrote:
> 
> Yep.  That does it.  Thanks.
> 
> -mp
> 
> ps.  If the powers-that-be have a slightly less verbose way to stop
> processing from within a child script, if you could let the list know, that
> would be cool.
> 
> At 10:25 AM 2/28/01, Neil Gunton wrote:
> > > My login testing occurs from within an .epl page that is invoked by Execute
> > > from within another .epl file.
> > >
> > > main.epl
> > >          Execute( logintest.epl)
> > >          <code>
> > >          Execute(sidenav.epl)
> > >          <code>
> > >
> > > When I call exit(), the logintest.epl exits but main.epl and the rest of
> > > it's children .epl files continue to function.
> > > Does that sound like an expected behavior?
> >
> >I think I experienced the same thing, though I now seem to be able to
> >exit from executed pages properly. I am not sure what the official
> >behavior is sposed to be. However, in terms of just getting it all to
> >work,  what you could try is setting a flag in the $req variable which
> >gets passed to every page, and then test that variable in main.epl. For
> >example:
> >
> >logintest.epl
> >
> >         # Get the req
> >         $req = shift;
> >
> >         # Do tests, we decide to exit
> >         $req->{exit} = 1;
> >
> >main.epl
> >         Execute ('logintest.epl');
> >         $req = shift;
> >         if ($req->{exit})
> >         {
> >                 $http_headers_out{'Location'} = "/login/";
> >                 exit();
> >         }
> >         Execute ('sidenav.epl');
> >
> >If you are calling exit() from the main page, it should work.
> >
> >Hope this helps
> >
> >-Neil
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: embperl-unsubscribe@perl.apache.org
> For additional commands, e-mail: embperl-help@perl.apache.org

Re: Stop processing script upon die

Posted by Gerald Richter <ri...@ecos.de>.
Neil,

> 
> Would it be worth considering an [$ exit $] command in Embperl that
> would stop all processing at that point, even if the command is in a
> file which is executed from another?

Yes, something like this would make sense. I add it to the TODO list

> Currently, if you call the Perl
> exit() function then it only seems to exit from the current file, but
> the parent will continue.

yes

> It seems like a common pattern to want to
> cease all processing, even if you are in a child file or subroutine. 

yes

> Or,
> is there a cleaner way to do it (using the existing version) than the
> one I suggested below?
> 

no

Gerald