Volks,
am I just slow or what? I liked david's illustration yesterday, and dashed off this morning to code up the illustration about overridden method - on the specific order of Connie's original concern, so I had three packages A, B1, C - { base is to the left }. So B1's overriding of A's return_hash() method did the and C's overriding of B1 worked smothely with a variation on the basic: sub return_hash { my ($self) = shift; my $hash = $self->SUPER::return_hash(); $hash->{B} = 'B2'; return($hash); } but when I went to make the method in B1 that C would inherit to display the inheritence chain, I had thought I could likewise get away with the 'SUPER' trick a la sub parent_chain { my ($me) = @_; my @generations = ref($me); for my $parent ( @{$me->child_of()} ) { # # check that my 'SUPER' can parent_chain() # if ( my $sub_ref = $me->SUPER::can('parent_chain')) { # this is line #83 my $grand_parents = $me->SUPER::parent_chain(); push(@generations, $_) for (@$grand_parents); } else { push(@generations, $parent); } } return(\@generations); } only to get the error message on the order of File "B1.pm"; Line 84: Can't locate object method "parent_chain" via package "B1" and then it HIT ME! Smack! - and this is where I need some help making sure that my 'explanaition' matches the 'real answer'... package C inherited that method from B1, B1 did not over-ride that method - so a) the fact that the $me there is a blessed reference to the Class C b) there exists no over-ridden method in the super-class of B1 that can be called - and that $sub_ref - which is the address of this method ... while 'true' in the sense that it is NOT an undefined value - did not majikally "jump" where I had mistakenly thought it should... So i re-wrote that as: sub parent_chain { my ($me) = @_; my @generations = ref($me); for my $parent ( @{$me->child_of()} ) { if ( UNIVERSAL::can($parent, 'parent_chain' )) { push (@generations, $_ ) for @{$parent->new->parent_chain()} ; } else { push(@generations, $parent); } } return(\@generations); } # end of parent_chain Which expressly asks IF my Parent Class can do that method, then we do the usual autonomous object method... so that the simple demo code #!/usr/bin/perl -w use strict; use C ; # we find it because @INC includes "." my $c = new C; my $family_tree = $c->parent_chain(); print "Iam - ", shift @$family_tree ," :\n "; while ( my $Iam = shift @$family_tree) { print "Which is a Child of - $Iam :\n "; } happily generates: Iam - C : Which is a Child of - B1 : Which is a Child of - A : Hence one should only use SUPER in a method if a) the method itself is overriding an inherited method b) you have a clue that in multiple class inheritences you will find the one you really want? ciao drieux --- -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]