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:
packageHorse;useMoose;has'name'=>(is=>'rw');has'color'=>(is=>'rw');noMoose;__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:
packageHorse;useMoose;usenamespace:: ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access