in reply to goto in CORE::GLOBAL::exit - is it safe?

Ok, this code jumped out at me & it may help you out or it has nothing to pertain to the current title..
=P
BEGIN { # Override with itself so it can be overridden at run-time later. *CORE::GLOBAL::exit = sub { CORE::exit @_; } } { my $exit_code; no warnings 'redefine'; local *CORE::GLOBAL::exit = sub { $exit_code = shift; goto EXIT; }; # ...do code which calls abort handler... EXIT: $CGI::Fast::Ext_Request->Finish(); }

Replies are listed 'Best First'.
Re^2: goto in CORE::GLOBAL::exit - is it safe?
by powerman (Friar) on Aug 30, 2007 at 16:15 UTC
    Yeah, I've already seen this code here. ;-)

    I propose exactly same solution, and I just wonder why it was not used by mod_perl? This make me thinking there can be some hidden issues with this solution.

      thats the same link i got the code from.

      for mod_perl i use this code to exit. * Edited
      use subs qw(exit); # this is also part of the exit mod_perl code # if anyone cares # Figure out how to exit mod_perl. *exit = $ENV{'MOD_PERL'} ? \&Apache::exit : sub { CORE::exit };

      I was playing with another code like it but that one seemed to work better.
        ... and &Apache::exit internally call die(). And so it fail to "exit" if this code executed inside eval. This is documented issue, you can read about it here.

        I just wonder why not solve this issue by replacing die() with goto()?