=pod =head1 NAME Moose::Cookbook::Snack::Keywords - Restricted keywords in Moose =cut =head1 DESCRIPTION There are several keywords exported in L that cause clashes against any barewords such as attribute names, sub names, and globs. =head2 The 'meta' keyword While most of the reserved keywords collisions can be avoided, however I is the only one you B override. Do not attempt to override I. =head2 Moose Keywords If you are using Moose its best to avoid these keywords =over 4 =item extends =item with =item has =item before =item after =item around =item super =item override =item inner =item augment =item make_immutable =item confess =item blessed =back =head2 Moose::Util::TypeConstraints Keywords If you are using Moose::Util::TypeConstraints its best to avoid these keywords =over 4 =item type =item subtype =item class_type =item role_type =item as =item where =item message =item optimize_as =item coerce =item from =item via =item enum =item find_type_constraint =item register_type_constraint =back =head2 Avoiding collisions =head3 Turning off Moose To remove the keywords Moose exports using no Moose at the bottom of your code package Thing; use Moose; # code here no Moose; =head3 Sub::Exporter The L module can rename keywords 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');; =head3 namespace::clean You can use L to clean up the namespace =head1 AUTHOR AND COPYRIGHT John Goulah Cjgoulah@cpan.org> =head1 LICENSE This program is free software; you can redistribute it and/or modify it under the same terms as perl itself. =cut