package Foo; sub foo { 'foo' } package Bar; # Bar inherits 'foo' from Foo @ISA = qw(Foo); sub bar { 'bar' } # Bar defines 'bar' package main; use Class::CanBeA; my @subclasses = @{Class::CanBeA::subclasses('Foo')}; foreach my $class (@subclasses) { print "$class is a subclass of Foo\n"; foreach my $sub (qw(foo bar)) { if(!exists(&{$class.'::'.$sub}) && $class->can($sub)) { print $class.'::'.$sub." is inherited\n"; } } }