Attributes are described in the L<Moose::Manual::Attributes>
documentation.
-Loading Moose also turns enables C<strict> and C<warnings> pragmas in
-your class.
+Loading Moose also enables C<strict> and C<warnings> pragmas in your
+class.
When you load Moose, your class will become a subclass of
L<Moose::Object>. The L<Moose::Object> class provides a default
-constructor, destructor, as well as object construction helper
+constructor and destructor, as well as object construction helper
methods. You can read more about this in the
L<Moose::Manual::Construction> document.
it just makes your classes "cleaner". You can do this by simply adding
C<no Moose> at the end of your module file.
+ package Person;
+
+ use Moose;
+
+ has 'ssn' => ( is => 'rw' );
+
+ no Moose;
+
This deletes Moose's sugar functions from your class's namespace, so
that C<< Person->can('has') >> will no longer return true.
__PACKAGE__->meta->make_immutable;
+=head2 Immutabilization and C<new()>
+
+If you override C<new()> in your class, then the immutabilization code
+will not be able to provide an optimized constructor for your
+class. Instead, you should use a C<BUILD()> method, which will be
+called from the inlined constructor.
+
+Alternately, if you really need to provide a different C<new()>, you
+can also provide your own immutabilization method. Doing so requires
+extending the Moose metaclasses, and is well beyond the scope of this
+manual.
+
=head1 AUTHOR
Dave Rolsky E<lt>autarch@urth.orgE<gt>