diff options
Diffstat (limited to 'Master/tlpkg/tlperl/lib/autodie/ScopeUtil.pm')
-rw-r--r-- | Master/tlpkg/tlperl/lib/autodie/ScopeUtil.pm | 80 |
1 files changed, 0 insertions, 80 deletions
diff --git a/Master/tlpkg/tlperl/lib/autodie/ScopeUtil.pm b/Master/tlpkg/tlperl/lib/autodie/ScopeUtil.pm deleted file mode 100644 index 2029209abf7..00000000000 --- a/Master/tlpkg/tlperl/lib/autodie/ScopeUtil.pm +++ /dev/null @@ -1,80 +0,0 @@ -package autodie::ScopeUtil; - -use strict; -use warnings; - -# Docs say that perl 5.8.3 has Exporter 5.57 and autodie requires -# 5.8.4, so this should "just work". -use Exporter 5.57 qw(import); - -use autodie::Scope::GuardStack; - -our @EXPORT_OK = qw(on_end_of_compile_scope); - -# ABSTRACT: Utilities for managing %^H scopes -our $VERSION = '2.26'; # VERSION - -# docs says we should pick __PACKAGE__ /<whatever> -my $H_STACK_KEY = __PACKAGE__ . '/stack'; - -sub on_end_of_compile_scope { - my ($hook) = @_; - - # Dark magic to have autodie work under 5.8 - # Copied from namespace::clean, that copied it from - # autobox, that found it on an ancient scroll written - # in blood. - - # This magic bit causes %^H to be lexically scoped. - $^H |= 0x020000; - - my $stack = $^H{$H_STACK_KEY}; - if (not defined($stack)) { - $stack = autodie::Scope::GuardStack->new; - $^H{$H_STACK_KEY} = $stack; - } - - $stack->push_hook($hook); - return; -} - -1; - -=head1 NAME - -autodie::ScopeUtil - Utilities for managing %^H scopes - -=head1 SYNOPSIS - - use autodie::ScopeUtil qw(on_end_of_compile_scope); - on_end_of_compile_scope(sub { print "Hallo world\n"; }); - -=head1 DESCRIPTION - -Utilities for abstracting away the underlying magic of (ab)using -C<%^H> to call subs at the end of a (compile-time) scopes. - -Due to how C<%^H> works, these utilities are only useful during the -compilation phase of a perl module and relies on the internals of how -perl handles references in C<%^H>. This module is not a part of -autodie's public API. - -=head2 Methods - -=head3 on_end_of_compile_scope - - on_end_of_compile_scope(sub { print "Hallo world\n"; }); - -Will invoke a sub at the end of a (compile-time) scope. The sub is -called once with no arguments. Can be called multiple times (even in -the same "compile-time" scope) to install multiple subs. Subs are -called in a "first-in-last-out"-order (FILO or "stack"-order). - -=head1 AUTHOR - -Copyright 2013, Niels Thykier E<lt>niels@thykier.netE<gt> - -=head1 LICENSE - -This module is free software. You may distribute it under the -same terms as Perl itself. |