Provided by: libmoose-perl_2.1005-1_amd64 bug

NAME

       Moose::Cookbook::Snack::Keywords - Restricted "keywords" in Moose

VERSION

       version 2.1005

DESCRIPTION

       Moose exports a number of sugar functions in order to emulate Perl built-in keywords.
       These can cause clashes with other user-defined functions. This document provides a list
       of those keywords for easy reference.

   The 'meta' keyword
       "use Moose" adds a method called "meta" to your class. If this conflicts with a method or
       function you are using, you can rename it, or prevent it from being installed entirely. To
       do this, pass the "-meta_name" option when you "use Moose". For instance:

         # install it under a different name
         use Moose -meta_name => 'moose_meta';

         # don't install it at all
         use Moose -meta_name => undef;

   Moose Keywords
       If you are using Moose or Moose::Role it is best to avoid these keywords:

       extends
       with
       has
       before
       after
       around
       super
       override
       inner
       augment
       confess
       blessed

   Moose::Util::TypeConstraints Keywords
       If you are using Moose::Util::TypeConstraints it is best to avoid these keywords:

       type
       subtype
       class_type
       role_type
       maybe_type
       duck_type
       as
       where
       message
       optimize_as
       inline_as
       coerce
       from
       via
       enum
       find_type_constraint
       register_type_constraint

   Avoiding collisions
       Turning off Moose

       To remove the sugar functions Moose exports, just add "no Moose" at the bottom of your
       code:

         package Thing;
         use Moose;

         # code here

         no Moose;

       This will unexport the sugar functions that Moose originally exported. The same will also
       work for Moose::Role and Moose::Util::TypeConstraints.

       Sub::Exporter features

       Moose, Moose::Role and Moose::Util::TypeConstraints all use Sub::Exporter to handle all
       their exporting needs. This means that all the features that Sub::Exporter provides are
       also available to them.

       For instance, with Sub::Exporter you can rename keywords, like so:

         package LOL::Cat;
         use Moose 'has' => { -as => 'i_can_haz' };

         i_can_haz 'cheeseburger' => (
             is      => 'rw',
             trigger => sub { print "NOM NOM" }
         );

         LOL::Cat->new->cheeseburger('KTHNXBYE');

       See the Sub::Exporter docs for more information.

       namespace::autoclean and namespace::clean

       You can also use namespace::autoclean to clean up your namespace.  This will remove all
       imported functions from your namespace. Note that if you are importing functions that are
       intended to be used as methods (this includes overload, due to internal implementation
       details), it will remove these as well.

       Another option is to use namespace::clean directly, but you must be careful not to remove
       "meta" when doing so:

         package Foo;
         use Moose;
         use namespace::clean -except => 'meta';
         # ...

SEE ALSO

       Moose
       Moose::Role
       Moose::Util::TypeConstraints
       Sub::Exporter
       namespace::autoclean
       namespace::clean

AUTHOR

       Moose is maintained by the Moose Cabal, along with the help of many contributors. See
       "CABAL" in Moose and "CONTRIBUTORS" in Moose for details.

COPYRIGHT AND LICENSE

       This software is copyright (c) 2013 by Infinity Interactive, Inc..

       This is free software; you can redistribute it and/or modify it under the same terms as
       the Perl 5 programming language system itself.