If the same @ISA variable is assigned to multiple packages, inheritance does not work properly. It used to work in 5.8. Here is an example:
*right::ISA = \@left'ISA;
push right::ISA, parent;
print right->isa('parent'),"\n"; # prints nothing in 5.10; 1 in 5.8
print left->isa('parent'),"\n"; # prints 1 regardless of perl version
This is a known problem, as this comment in mg.c, which was added in 70cd14a, shows:
/* XXX Once it's possible, we need to
detect that our @ISA is aliased in
other stashes, and act on the stashes
of all of the aliases */
But I’m creating this ticket so it’s not forgotten. (And now I see there’s a test commented out in t/mro/basic.t for it.)
A fix I’m working on for part of bug #75176 will provide infrastucture that makes this bug trivial to fix.
Site configuration information for perl 5.13.3:
Configured by sprout at Sat Jul 31 05:50:29 PDT 2010.