This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Re: [perl #38034] A combination eval, DESTROY method and $@ - dangerous - bug
[perl5.git] / pod / perlobj.pod
index bcf56a7..6cfa20c 100644 (file)
@@ -456,6 +456,11 @@ manipulating C<$_[0]> within the destructor.  The object itself (i.e.
 the thingy the reference points to, namely C<${$_[0]}>, C<@{$_[0]}>, 
 C<%{$_[0]}> etc.) is not similarly constrained.
 
+Since DESTROY methods can be called at unpredictable times, it is
+important that you localise any global variables that the method may
+update.  In particular, localise C<$@> if you use C<eval {}> and
+localise C<$?> if you use C<system> or backticks.
+
 If you arrange to re-bless the reference before the destructor returns,
 perl will again call the DESTROY method for the re-blessed object after
 the current one returns.  This can be used for clean delegation of