in reply to tracing SUPER

Just a comment; SUPER:: has nothing to do with the object; it's purely syntactic sugar to look up the current package's first @ISA element.

Witness:

use strict; use warnings; @Foo::ISA = "Bar"; @Baz::ISA = "Quux"; sub Bar::phrenia { print "In Bar::phrenia\n" } sub Quux::phrenia { print "In Quux::phrenia\n" } package Foo; sub Baz::schizo { my $self = shift; $self->SUPER::phrenia(); } package main; my $obj = bless {}, "Baz"; $obj->schizo();
This produces "In Bar::phrenia", where Bar isn't even in $obj's inheritance tree.