In perl.git, the branch abigail/deprecation has been updated <http://perl5.git.perl.org/perl.git/commitdiff/16fe20a9b2665167e0eb747bd583d4497432492f?hp=74e63b106b373194238e686ea79dcc7dd8b36dd1>
- Log ----------------------------------------------------------------- commit 16fe20a9b2665167e0eb747bd583d4497432492f Author: Abigail <[email protected]> Date: Thu Nov 24 13:57:23 2016 +0100 No longer mention some uses of $SIG {__DIE__} are deprecated. The C<$SIG{__DIE__}> hook is called even inside an C<eval()>. It was never intended to happen this way, but an implementation glitch made this possible. This used to be deprecated, as it allowed strange action at a distance like rewriting a pending exception in C<$@>. Plans to rectify this have been scrapped, as users found that rewriting a pending exception is actually a useful feature, and not a bug. ----------------------------------------------------------------------- Summary of changes: pod/perldeprecation.pod | 14 ++++++++++++++ pod/perlvar.pod | 13 ++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/pod/perldeprecation.pod b/pod/perldeprecation.pod index 341041e..90861de 100644 --- a/pod/perldeprecation.pod +++ b/pod/perldeprecation.pod @@ -227,6 +227,20 @@ These old, perl3-era utilities have been deprecated in favour of C<< h2xs >> for a long time. In Perl 5.26, they have been removed. +=head3 Trapping C<< $SIG {__DIE__} >> other than during program exit. + +The C<$SIG{__DIE__}> hook is called even inside an C<eval()>. It was +never intended to happen this way, but an implementation glitch made +this possible. This used to be deprecated, as it allowed strange action +at a distance like rewriting a pending exception in C<$@>. Plans to +rectify this have been scrapped, as users found that rewriting a +pending exception is actually a useful feature, and not a bug. + +Perl never issued a deprecation warning for this; the deprecation +was by documentation policy only. But this deprecation has been +lifted in Perl 5.26. + + =head2 Perl 5.24 =head3 Use of C<< *glob{FILEHANDLE} >> diff --git a/pod/perlvar.pod b/pod/perlvar.pod index 9c5fda7..b8c68b3 100644 --- a/pod/perlvar.pod +++ b/pod/perlvar.pod @@ -659,13 +659,12 @@ or a C<die()>. The C<__DIE__> handler is explicitly disabled during the call, so that you can die from a C<__DIE__> handler. Similarly for C<__WARN__>. -Due to an implementation glitch, the C<$SIG{__DIE__}> hook is called -even inside an C<eval()>. Do not use this to rewrite a pending -exception in C<$@>, or as a bizarre substitute for overriding -C<CORE::GLOBAL::die()>. This strange action at a distance may be fixed -in a future release so that C<$SIG{__DIE__}> is only called if your -program is about to exit, as was the original intent. Any other use is -deprecated. +The C<$SIG{__DIE__}> hook is called even inside an C<eval()>. It was +never intended to happen this way, but an implementation glitch made +this possible. This used to be deprecated, as it allowed strange action +at a distance like rewriting a pending exception in C<$@>. Plans to +rectify this have been scrapped, as users found that rewriting a +pending exception is actually a useful feature, and not a bug. C<__DIE__>/C<__WARN__> handlers are very special in one respect: they may be called to report (probable) errors found by the parser. In such -- Perl5 Master Repository
