sourCEntral - mobile manpages




Mouse::Spec − To what extent Mouse is compatible with Moose


This document describes Mouse version 0.97


    use Mouse::Spec;
    printf "Mouse/%s is compatible with Moose/%s\n",
        Mouse::Spec−>MouseVersion, Mouse::Spec−>MooseVersion;


Mouse is a subset of Moose. This document describes to what extend Mouse is compatible (and incompatible) with Moose.

Compatibility with Moose
Sugary APIs

The sugary APIs are highly compatible with Moose. Methods which have the same name as Moose’s are expected to be compatible with Moose’s.

Meta object protocols

Meta object protocols are a subset of the counterpart of Moose. Their methods which have the same name as Moose’s are expected to be compatible with Moose’s. Feel free to use these methods even if they are not documented.

However, there are differences between Moose’s MOP and Mouse’s. For example, meta object protocols in Mouse have no attributes by default, so "$metaclass−>meta−>make_immutable()" will not work as you expect. Don not make metaclasses immutable.


Meta instance mechanism is not implemented, so you cannot change the reftype of Mouse objects in the same way as Moose.

Role exclusion

Role exclusion, "exclude()", is not implemented.

−metaclass in Mouse::Exporter

"use Mouse −metaclass => ..." are not implemented. Use "use Mouse −traits => ..." instead.


Native traits are not supported directly, but "MouseX::NativeTraits" is available on CPAN . Once you have installed it, you can use it as the same way in Moose. That is, native traits are automatically loaded by Mouse.

See MouseX::NativeTraits for details.

Notes about Moose::Cookbook
Many recipes in Moose::Cookbook fit Mouse, including:

Moose::Cookbook::Basics::Recipe1 − The (always classic) Point example

Moose::Cookbook::Basics::Recipe2 − A simple BankAccount example

Moose::Cookbook::Basics::Recipe3 − A lazy BinaryTree example

Moose::Cookbook::Basics::Recipe4 − Subtypes, and modeling a simple Company class hierarchy

Moose::Cookbook::Basics::Recipe5 − More subtypes, coercion in a Request class

Moose::Cookbook::Basics::Recipe6 − The augment/inner example

Moose::Cookbook::Basics::Recipe7 − Making Moose fast with immutable

Moose::Cookbook::Basics::Recipe8 − Builder methods and lazy_build

Moose::Cookbook::Basics::Recipe9 − Operator overloading, subtypes, and coercion

Moose::Cookbook::Basics::Recipe10 − Using BUILDARGS and BUILD to hook into object construction

Moose::Cookbook::Roles::Recipe1 − The Moose::Role example

Moose::Cookbook::Roles::Recipe2 − Advanced Role Composition − method exclusion and aliasing

Moose::Cookbook::Roles::Recipe3 − Applying a role to an object instance

Moose::Cookbook::Meta::Recipe2 − A meta-attribute, attributes with labels

Moose::Cookbook::Meta::Recipe3 − Labels implemented via attribute traits

Moose::Cookbook::Extending::Recipe3 − Providing an alternate base object class