summaryrefslogtreecommitdiffstats
path: root/lib/Package/Stash/PP.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Package/Stash/PP.pm')
-rw-r--r--lib/Package/Stash/PP.pm10
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/Package/Stash/PP.pm b/lib/Package/Stash/PP.pm
index a831564..49cce98 100644
--- a/lib/Package/Stash/PP.pm
+++ b/lib/Package/Stash/PP.pm
@@ -182,7 +182,15 @@ sub add_symbol {
}
else {
my $namespace = $self->namespace;
- $namespace->{$name} ||= *{ Symbol::gensym() };
+ {
+ # using glob aliasing instead of Symbol::gensym, because otherwise,
+ # magic doesn't get applied properly.
+ # see <20120710063744.19360.qmail@lists-nntp.develooper.com> on p5p
+ local *__ANON__:: = $namespace;
+ no strict 'refs';
+ no warnings 'void';
+ *{"__ANON__::$name"};
+ }
if (@_ > 2) {
no warnings 'redefine';