use composition LWP::UserAgent => LWP::UserAgent::Determined => LWP::UserAgent::Cached => LWP::UserAgent::Super; use strict; sub print_isa { my ($pkg, $level) = @_; print "\t"x$level, $pkg, "\n"; no strict 'refs'; for my $parent (@{"$pkg\::ISA"}) { print_isa($parent, $level+1); } } print_isa('LWP::UserAgent::Super');