From b10a21db5360fcf9e07440ee9d1dc36031be572b Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 27 Oct 2010 13:13:40 -0500 Subject: actually, only do the weird special casing on broken perl versions --- lib/Package/Stash.pm | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'lib/Package/Stash.pm') diff --git a/lib/Package/Stash.pm b/lib/Package/Stash.pm index f708bbc..6c361c1 100644 --- a/lib/Package/Stash.pm +++ b/lib/Package/Stash.pm @@ -6,6 +6,9 @@ use warnings; use Carp qw(confess); use Scalar::Util qw(reftype); use Symbol; +# before 5.12, assigning to the ISA glob would make it lose its magical ->isa +# powers +use constant BROKEN_ISA_ASSIGNMENT => ($] < 5.012); =head1 SYNOPSIS @@ -233,12 +236,15 @@ sub get_package_symbol { if (!exists $namespace->{$name}) { if ($opts{vivify}) { if ($type eq 'ARRAY') { - $self->add_package_symbol( - $variable, - # setting our own arrayref manually loses the magicalness - # or something - $name eq 'ISA' ? () : ([]) - ); + if (BROKEN_ISA_ASSIGNMENT) { + $self->add_package_symbol( + $variable, + $name eq 'ISA' ? () : ([]) + ); + } + else { + $self->add_package_symbol($variable, []); + } } elsif ($type eq 'HASH') { $self->add_package_symbol($variable, {}); -- cgit v1.2.3-54-g00ecf