You know, there are plenty of modules out there which expect you to inherit from them to gain their functionality. Perhaps the worst offender is Exporter. Your non-OO modules are expected to inherit? Sheesh.
If you're writing an abstract base class, it makes perfect sense to use inheritance, but please stop and ask yourself if there's any other way you can provide the desired functionality. Particularly with multiple inheritance (MI), Perl's default method resolution order is awful (C3 method resolution allieves the pain but doesn't make it go away).
Of course, anything which forces MI should be viewed with great suspicion (I'm lookin' at you, Catalyst). MI is so well known to be problematic that many languages with OO facilities simply forbid it.
So, let's say I need a factory class, with class data, don't want to worry about missing methods (like Smalltalk and Sqeak) and want handy method generation.
Where's the bug?
# Hmm, better sort these so they're easy to read
use base qw(
Now how much of that behavior could you duplicate without forcing inheritance on people?