The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.


Devel::GlobalPhase - Detect perl's global phase on older perls.


    use Devel::GlobalPhase;
    print global_phase; # RUN

    use Devel::GlobalPhase -var;
    print ${^GLOBAL_PHASE}; # RUN


This gives access to ${^GLOBAL_PHASE} in versions of perl that don't provide it. The built in variable will be used if it is available.

If all that is needed is detecting global destruction, Devel::GlobalDestruction should be used instead of this module.



Returns the global phase either from ${^GLOBAL_PHASE} or by calculating it.



If this option is specified on import, the global variable ${^GLOBAL_PHASE} will be created if it doesn't exist, emulating the built in variable from newer perls.


  • There are tricks that can be played with B or XS that would fool this module for the INIT and END phase.

  • During an END {} block created at runtime after this module is loaded, the phase may be reported as RUN. While this could be made more accurate, it would slow down the module significantly during the RUN phase, and has the potential to segfault perl.


haarg - Graham Knop (cpan:HAARG) <>


Uses some code taken from Devel::GlobalDestruction.


Copyright (c) 2013 the Devel::GlobalPhase "AUTHOR" and "CONTRIBUTORS" as listed above.


This library is free software and may be distributed under the same terms as perl itself.