X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2Fnamespace%2Fclean.pm;h=81da6f3873db8db719b8e4db667b9e86e88ab3d8;hb=aa2aafaeb56dc0b50be2878642669c5ee17d944f;hp=86478cf751d594d4a7c05aedb0010fb38a15cc0d;hpb=e1815c020fe559e5281afbd08c246b71dfe6eab8;p=p5sagit%2Fnamespace-clean.git diff --git a/lib/namespace/clean.pm b/lib/namespace/clean.pm index 86478cf..81da6f3 100644 --- a/lib/namespace/clean.pm +++ b/lib/namespace/clean.pm @@ -11,7 +11,7 @@ use strict; use vars qw( $VERSION $STORAGE_VAR $SCOPE_HOOK_KEY $SCOPE_EXPLICIT ); use Symbol qw( qualify_to_ref ); -use Scope::Guard; +use B::Hooks::EndOfScope; =head1 VERSION @@ -21,8 +21,6 @@ use Scope::Guard; $VERSION = 0.08; $STORAGE_VAR = '__NAMESPACE_CLEAN_STORAGE'; -$SCOPE_HOOK_KEY = 'namespace_clean_SCOPING'; -$SCOPE_EXPLICIT = 'namespace_clean_EXPLICIT'; =head1 SYNOPSIS @@ -157,7 +155,6 @@ my $RemoveSubs = sub { sub import { my ($pragma, @args) = @_; - $^H |= 0x120000; my (%args, $is_explicit); if (@args and $args[0] =~ /^\-/) { @@ -170,9 +167,9 @@ sub import { my $cleanee = caller; if ($is_explicit) { - $^H{ $SCOPE_EXPLICIT } = Scope::Guard->new(sub { + on_scope_end { $RemoveSubs->($cleanee, {}, @args); - }); + }; } else { @@ -197,9 +194,9 @@ sub import { # register EOF handler on first call to import unless ($store->{handler_is_installed}) { - $^H{ $SCOPE_HOOK_KEY } = Scope::Guard->new(sub { + on_scope_end { $RemoveSubs->($cleanee, $store, keys %{ $store->{remove} }); - }); + }; $store->{handler_is_installed} = 1; }