summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2012-01-04 15:44:11 -0600
committerJesse Luehrs <doy@tozt.net>2012-01-04 15:44:11 -0600
commit677465901f2704bbe258ba2000cbcf8e795e130b (patch)
treec29e81f7e22c93fdfdafdaad0ef7a6673a7a5017
parent1034da1ff657419f79977ab52bb2e9e0f7b3a413 (diff)
downloadcircular-require-677465901f2704bbe258ba2000cbcf8e795e130b.tar.gz
circular-require-677465901f2704bbe258ba2000cbcf8e795e130b.zip
simplify a bit
-rw-r--r--lib/circular/require.pm23
1 files changed, 6 insertions, 17 deletions
diff --git a/lib/circular/require.pm b/lib/circular/require.pm
index eeae7ac..f398743 100644
--- a/lib/circular/require.pm
+++ b/lib/circular/require.pm
@@ -45,7 +45,7 @@ module has not finished executing.
my %seen;
my $saved;
-my %settings;
+my @hide;
sub _require {
my ($file) = @_;
@@ -58,8 +58,7 @@ sub _require {
my $caller;
$caller = caller( $depth++ )
- while !$caller
- || grep { m/^$caller$/ } @{ $settings{hide} };
+ while !$caller || grep { m/^$caller$/ } @hide;
warn "Circular require detected: $string_file (from $caller)\n";
}
@@ -96,7 +95,10 @@ sub import {
sub unimport {
my $class = shift;
- $class->settings( @_ );
+ my %params = @_;
+
+ @hide = ref($params{'hide'}) ? @{ $params{'hide'} } : ($params{'hide'})
+ if exists $params{'hide'};
my $stash = Package::Stash->new('CORE::GLOBAL');
my $old_require = $stash->get_package_symbol('&require');
@@ -105,19 +107,6 @@ sub unimport {
$stash->add_package_symbol('&require', \&_require);
}
-sub settings {
- my $class = shift;
- my %params = @_;
-
- %settings = ( %settings, %params );
-
- $settings{hide} = [ $settings{hide} ]
- if $settings{hide}
- && !ref $settings{hide};
-
- return %settings;
-}
-
=head1 CAVEATS
This module works by overriding C<CORE::GLOBAL::require>, and so other modules