This says that all C<Person> objects have an optional read-write
"first_name" attribute.
-=head2 Read-write Vs Read-only
+=head2 Read-write Vs read-only
The options passed to C<has> define the properties of the
attribute. There are a many options, but in the simplest form you just
that has no accessors, which is pointless unless you're doing some
deep, dark magic).
-=head2 Accessor Methods
+=head2 Accessor methods
Each attribute has one or more accessor methods. An accessor lets you
read and write the value of that attribute for an object.
extension system that lets override the default naming
conventions. See L<Moose::Manual::MooseX> for more details.
-=head2 Predicate and Clearer Methods
+=head2 Predicate and clearer methods
Moose allows you to explicitly distinguish between a false or
undefined attribute value and an attribute which has not been set. If
By default, Moose does not make a predicate or clearer for you. You
must explicitly provide names for them.
-=head2 Required or Not?
+=head2 Required or not?
By default, all attributes are optional, and do not need to be
provided at object construction time. If you want to make an attribute
have a I<private> C<clearer> and C<predicate> for a required
attribute.
-=head2 Default and Builder Methods
+=head2 Default and builder methods
Attributes can have default values, and Moose provides two ways to
specify that default.
We strongly recommend that you use a C<builder> instead of a
C<default> for anything beyond the most trivial default.
-=head2 Laziness and lazy_build
+=head2 Laziness and C<lazy_build>
Moose lets you defer attribute population by making an attribute
C<lazy>:
Options that you explicitly provide are always used in favor of
Moose's internal defaults.
-=head2 Constructor Parameters (init_arg)
+=head2 Constructor parameters (C<init_arg>)
By default, each attribute can be passed by name to the class's
constructor. On occasion, you may want to use a different name for
By setting the C<init_arg> to C<undef>, we make it impossible to set
this attribute when creating a new object.
-=head2 Weak References
+=head2 Weak references
Moose has built-in support for weak references. If you set the
C<weak_ref> option to a true value, then it will call
whenever the accessor is called. Second, it is also called if the
attribute is set via a lazy default or builder.
-=head2 Attribute Types
+=head2 Attribute types
Attributes can be restricted to only accept certain types:
Moose does absolutely nothing with this information other than store
it.
-=head2 The C<auto_deref> Option
+=head2 The C<auto_deref> option
If your attribute is an array reference or hash reference, the
C<auto_deref> option will make Moose dereference the value when it is