summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README56
1 files changed, 56 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..d6114b1
--- /dev/null
+++ b/README
@@ -0,0 +1,56 @@
+NAME
+ Devel::GlobalDestruction - Provides function returning the equivalent of
+ "${^GLOBAL_PHASE} eq 'DESTRUCT'" for older perls.
+
+SYNOPSIS
+ package Foo;
+ use Devel::GlobalDestruction;
+
+ use namespace::clean; # to avoid having an "in_global_destruction" method
+
+ sub DESTROY {
+ return if in_global_destruction;
+
+ do_something_a_little_tricky();
+ }
+
+DESCRIPTION
+ Perl's global destruction is a little tricky to deal with WRT finalizers
+ because it's not ordered and objects can sometimes disappear.
+
+ Writing defensive destructors is hard and annoying, and usually if
+ global destruction is happening you only need the destructors that free
+ up non process local resources to actually execute.
+
+ For these constructors you can avoid the mess by simply bailing out if
+ global destruction is in effect.
+
+EXPORTS
+ This module uses Sub::Exporter::Progressive so the exports may be
+ renamed, aliased, etc. if Sub::Exporter is present.
+
+ in_global_destruction
+ Returns true if the interpreter is in global destruction. In perl
+ 5.14+, this returns "${^GLOBAL_PHASE} eq 'DESTRUCT'", and on earlier
+ perls, detects it using the value of "PL_main_cv" or "PL_dirty".
+
+AUTHORS
+ Yuval Kogman <nothingmuch@woobling.org>
+
+ Florian Ragwitz <rafl@debian.org>
+
+ Jesse Luehrs <doy@tozt.net>
+
+ Peter Rabbitson <ribasushi@cpan.org>
+
+ Arthur Axel 'fREW' Schmidt <frioux@gmail.com>
+
+ Elizabeth Mattijsen <liz@dijkmat.nl>
+
+ Greham Knop <haarg@haarg.org>
+
+COPYRIGHT
+ Copyright (c) 2008 Yuval Kogman. All rights reserved
+ This program is free software; you can redistribute
+ it and/or modify it under the same terms as Perl itself.
+