Personal tools
Skip to content. | Skip to navigation
Moose is an extension of the Perl 5 object system. The main goal of Moose is to make Perl 5 Object Oriented programming easier, more consistent and less tedious. With Moose you can to think more about what you want to do and less about the mechanics of OOP. Additionally, Moose is built on top of Class::MOP, which is a metaclass system for Perl 5. This means that Moose not only makes building normal Perl 5 objects better, but it provides the power of metaclass programming as well. Moose is different from other Perl 5 object systems because it is not a new system, but instead an extension of the existing one.
Moose::Autobox provides an implementation of SCALAR, ARRAY, HASH & CODE for use with autobox.
This is an abstract role which provides an alternate constructor for creating objects using parameters passed in from a configuration file. The actual implementation of reading the configuration file is left to concrete subroles. It declares an attribute 'configfile' and a class method 'new_with_config', and requires that concrete roles derived from it implement the class method 'get_config_from_file'. Attributes specified directly as arguments to 'new_with_config' supersede those in the configfile.
This is a Moose role which provides an alternate constructor for creating objects using parameters passed in from the command line.
Roles are composable units of behavior. They are useful for factoring out functionality common to many classes from any part of your class hierarchy. (See Moose::Cookbook::Roles::Recipe1 for an introduction to Moose::Role.) While combining roles affords you a great deal of flexibility, individual roles have very little in the way of configurability. Core Moose provides alias for renaming methods to avoid conflicts, and excludes for ignoring methods you don't want or need (see Moose::Cookbook::Roles::Recipe2 for more about alias and excludes). Because roles serve many different masters, they usually provide only the least common denominator of functionality. To empower roles further, more configurability than alias and excludes is required. Perhaps your role needs to know which method to call when it is done. Or what default value to use for its url attribute. Parameterized roles offer exactly this solution.