Devel::...ruction(3)

🌸 NAME 🌸

okay so bestie, this whole page is the Devel::GlobalDestruction manual β€” the header is out here calling it Devel::...ruction(3), and the manual name is User Contributed Perl Documentation. cryptic? yes. iconic? also yes. πŸ’…

Devel::GlobalDestruction provides a function returning the equivalent of ${^GLOBAL_PHASE} eq 'DESTRUCT' for older perls. periodt, that's the whole name section.


✨ SYNOPSIS ✨

the way that you just drop this into your package and let it handle the global-destruction vibe check:

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 πŸ¦‹

ngl, Perl's global destruction is a little tricky to deal with WRT finalizers because it's not ordered and objects can sometimes disappear. not me watching objects ghost the party 😭.

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. lowkey a whole mood.

For these constructors β€” yes, the page says constructors β€” you can avoid the mess by simply bailing out if global destruction is in effect. slay, no chaos, just bail.


πŸ’… EXPORTS πŸ’…

This module uses Sub::Exporter::Progressive so the exports may be renamed, aliased, etc. if Sub::Exporter is present. iykyk, flexible export energy.

  • 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. fr fr, that's the whole check.

πŸ‘‘ AUTHORS πŸ‘‘

bestie, these are the legends behind it:

  • 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>

author list ate, no cap πŸ’–


the legal bits, copied exactly because we do not play with license text:

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.

mwah πŸ’‹ this page was served by perl v5.42.0, dated 2016-11-01, and filed under Devel::...ruction(3). bye bestie, go write a polite destructor 🫢

πŸ“¦ where this page comes from