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
authorMike Guy <mjtg@cam.ac.uk>
Tue, 3 Jan 2006 19:18:41 +0000 (19:18 +0000)
committerSteve Peters <steve@fisharerojo.org>
Tue, 3 Jan 2006 20:03:49 +0000 (20:03 +0000)
Message-Id: <E1Etrg9-0005XE-LZ@libra.cus.cam.ac.uk>

p4raw-id: //depot/perl@26625

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