Moose also provides the ability to use roles in classes.

A role is a collection of code that provides a specific set of functionality, that is often something that would be reusable amongst many classes.

Roles are not inherited, they are consumed. The code in the calling class consumes the role as if it were part of it.