in reply to perl inheritance

Moose is kind of a deep place to jump into, if you are new to OOP in perl, but the things you are asking for are fairly simple to do in the Moose framework.

In Moose there are separate ideas of a Class and a Role and objects created from these blocks can be joined either at the Class level or the instance level.

An example from the documentation for basic pre-instance mixing and method conflicts is found in the Moose::Role Manual

First Role
package Breakable; use Moose::Role; has 'is_broken' => ( is => 'rw', isa => 'Bool', ); sub break { my $self = shift; print "I broke\n"; $self->is_broken(1); }
Second Role
package Breakdancer; use Moose::Role sub break { }
And a class that uses methods from the Role
package FragileDancer; use Moose; with 'Breakable' => { -alias => { break => 'break_bone' } }, 'Breakdancer' => { -alias => { break => 'break_dance' } };

Update: The Moose is flying part I and II are the gentlest introductions that I know of. (by Randal L. Schwartz++)