.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Mouse::Spec 3pm" .TH Mouse::Spec 3pm "2018-11-02" "perl v5.28.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Mouse::Spec \- To what extent Mouse is compatible with Moose .SH "VERSION" .IX Header "VERSION" This document describes Mouse version v2.5.6 .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& use Mouse::Spec; \& \& printf "Mouse/%s is compatible with Moose/%s\en", \& Mouse::Spec\->MouseVersion, Mouse::Spec\->MooseVersion; .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" Mouse is a subset of Moose. This document describes to what extend Mouse is compatible (and incompatible) with Moose. .SS "Compatibility with Moose" .IX Subsection "Compatibility with Moose" \fISugary APIs\fR .IX Subsection "Sugary APIs" .PP 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. .PP \fIMeta object protocols\fR .IX Subsection "Meta object protocols" .PP 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. .PP However, there are differences between Moose's \s-1MOP\s0 and Mouse's. For example, meta object protocols in Mouse have no attributes by default, so \f(CW\*(C`$metaclass\->meta\->make_immutable()\*(C'\fR will not work as you expect. \&\fBDon not make metaclasses immutable\fR. .PP \fIMouse::Meta::Instance\fR .IX Subsection "Mouse::Meta::Instance" .PP Meta instance mechanism is not implemented, so you cannot change the reftype of Mouse objects in the same way as Moose. .PP \fIRole exclusion\fR .IX Subsection "Role exclusion" .PP Role exclusion, \f(CW\*(C`exclude()\*(C'\fR, is not implemented. .PP \fI\-metaclass in Mouse::Exporter\fR .IX Subsection "-metaclass in Mouse::Exporter" .PP \&\f(CW\*(C`use Mouse \-metaclass => ...\*(C'\fR are not implemented. Use \f(CW\*(C`use Mouse \-traits => ...\*(C'\fR instead. .PP \fIMouse::Meta::Attribute::Native\fR .IX Subsection "Mouse::Meta::Attribute::Native" .PP Native traits are not supported directly, but \f(CW\*(C`MouseX::NativeTraits\*(C'\fR is available on \s-1CPAN.\s0 Once you have installed it, you can use it as the same way in Moose. That is, native traits are automatically loaded by Mouse. .PP See MouseX::NativeTraits for details. .SS "Notes about Moose::Cookbook" .IX Subsection "Notes about Moose::Cookbook" Many recipes in Moose::Cookbook fit Mouse, including: .IP "\(bu" 4 Moose::Cookbook::Basics::Recipe1 \- The (always classic) \fBPoint\fR example .IP "\(bu" 4 Moose::Cookbook::Basics::Recipe2 \- A simple \fBBankAccount\fR example .IP "\(bu" 4 Moose::Cookbook::Basics::Recipe3 \- A lazy \fBBinaryTree\fR example .IP "\(bu" 4 Moose::Cookbook::Basics::Recipe4 \- Subtypes, and modeling a simple \fBCompany\fR class hierarchy .IP "\(bu" 4 Moose::Cookbook::Basics::Recipe5 \- More subtypes, coercion in a \fBRequest\fR class .IP "\(bu" 4 Moose::Cookbook::Basics::Recipe6 \- The augment/inner example .IP "\(bu" 4 Moose::Cookbook::Basics::Recipe7 \- Making Moose fast with immutable .IP "\(bu" 4 Moose::Cookbook::Basics::Recipe8 \- Builder methods and lazy_build .IP "\(bu" 4 Moose::Cookbook::Basics::Recipe9 \- Operator overloading, subtypes, and coercion .IP "\(bu" 4 Moose::Cookbook::Basics::Recipe10 \- Using \s-1BUILDARGS\s0 and \s-1BUILD\s0 to hook into object construction .IP "\(bu" 4 Moose::Cookbook::Roles::Recipe1 \- The Moose::Role example .IP "\(bu" 4 Moose::Cookbook::Roles::Recipe2 \- Advanced Role Composition \- method exclusion and aliasing .IP "\(bu" 4 Moose::Cookbook::Roles::Recipe3 \- Applying a role to an object instance .IP "\(bu" 4 Moose::Cookbook::Meta::Recipe2 \- A meta-attribute, attributes with labels .IP "\(bu" 4 Moose::Cookbook::Meta::Recipe3 \- Labels implemented via attribute traits .IP "\(bu" 4 Moose::Cookbook::Extending::Recipe3 \- Providing an alternate base object class .SH "SEE ALSO" .IX Header "SEE ALSO" Mouse .PP Moose .PP Moose::Manual .PP Moose::Cookbook