Chapter 19. Introduction to Moose
Moose
is a relatively new object system for Perl and is available
from CPAN.[59] It’s become popular enough in the community that we think it
deserves its own chapter in this book. We think everyone still needs to
learn the basics of Perl, but when we get into the real world of
programming, other people are going to tell us to use Moose
.
The goal of Moose
is to make OO
Perl less tedious by making it easier for us to do the stuff we should do
and probably normally skip. It also allows powerful code through its
meta-object protocol, which we won’t cover here.
In this chapter, we go through the classes we created in the previous
chapters and redo them with basic Moose
features. We can cover only the basics; Moose
deserves its own book.
Making Animals with Moose
First, we’ll create a horse class in Horse.pm that has a name and a color:
package
Horse
;
use
Moose
;
has
'name'
=>
(
is
=>
'rw'
);
has
'color'
=>
(
is
=>
'rw'
);
no
Moose
;
__PACKAGE__
−
>
meta
−
>
make_immutable
;
1
;
Bringing in Moose
defines has
, which takes
the name of an attribute along with its properties. Here, we’re saying
that the two attributes are “read/write,” or rw
. Moose
sets up the accessors to set and fetch the values so we don’t have
to.
When we are done defining our class, we use no Moose
to unimport the subroutines that
Moose
imported. We can also use
namespace::autoclean
, which works not only for Moose
, but other, non-Moose
modules we might write:
package
Horse
;
use
Moose
;
use
namespace:: ...
Get Intermediate Perl, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.