in reply to Inheritance in Perl

Not really. log is a method of the context/app object but you don't call its methods on the context object, right. You call them on the log object you access through the context object. E.g.-

$c->log->warn("oh hai!!!");

You're not calling $c->warn, you're doing the equivalent of-

my $logger = $c->log; $logger->warn("oh hai!!!");

So, there is no inheritance. There are two objects. One contains the other (and in cases where they both contain each other you'll likely need Scalar::Util::weaken).