diff options
author | Jesse Luehrs <doy@tozt.net> | 2010-08-26 22:13:30 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2010-08-26 22:31:13 -0500 |
commit | e55970bce6430bcc6cd014bc46983c100f660e79 (patch) | |
tree | e3b33ec08ad5f9a81b54734d84566c672d707352 /lib/Package/Stash.pm | |
parent | 0992f4ec5d71393517317327dd3164ad6b17a24c (diff) | |
download | package-stash-e55970bce6430bcc6cd014bc46983c100f660e79.tar.gz package-stash-e55970bce6430bcc6cd014bc46983c100f660e79.zip |
cache the ref to the stash
Diffstat (limited to 'lib/Package/Stash.pm')
-rw-r--r-- | lib/Package/Stash.pm | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/lib/Package/Stash.pm b/lib/Package/Stash.pm index d81c96e..32e5d30 100644 --- a/lib/Package/Stash.pm +++ b/lib/Package/Stash.pm @@ -33,8 +33,18 @@ argument. sub new { my $class = shift; - my ($namespace) = @_; - return bless { 'package' => $namespace }, $class; + my ($package) = @_; + my $namespace; + { + no strict 'refs'; + # supposedly this caused a bug in earlier perls, but I can't reproduce + # it, so re-enabling the caching + $namespace = \%{$package . '::'}; + } + return bless { + 'package' => $package, + 'namespace' => $namespace, + }, $class; } =method name @@ -54,15 +64,7 @@ Returns the raw stash itself. =cut sub namespace { - # NOTE: - # because of issues with the Perl API - # to the typeglob in some versions, we - # need to just always grab a new - # reference to the hash here. Ideally - # we could just store a ref and it would - # Just Work, but oh well :\ - no strict 'refs'; - return \%{$_[0]->name . '::'}; + return $_[0]->{namespace}; } { |