diff options
Diffstat (limited to 'README')
-rw-r--r-- | README | 56 |
1 files changed, 56 insertions, 0 deletions
@@ -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. + |