in reply to Finding classes which are inherited from a given class

I wrote the following recently for a similar purpose:

sub walk_oo_tree { my $obj = shift; my $class = ref $obj ? ref $obj : $obj; my @class_list = (); unless ($skip_class_map{$class}) { NO_STRICT_REFS_ZONE: { no strict 'refs'; @class_list = ($class, map { @{walk_oo_tree($_)} } @{join( +'::', $class, 'ISA')}); use strict 'refs'; } } return \@class_list; }

The %skip_class_map (in my implementation) was global (our) and evaluated to (UNIVERSAL => 1, AUTOLOAD => 1).

Note: you can pass this a class name or an object of the required class.

Finally, to head off comments re the 'NO_STRICT_REFS_ZONE:' block: the label, block and use are not necessary. I prefer defensive programming to surprises.

Regards,

PN5