Class::MOP 0.35 review

by on

Class::MOP is a Meta Object Protocol for Perl 5. SYNOPSIS # ..

License: Perl Artistic License
File size: 71K
Developer: Stevan Little and Yuval Kogman
0 stars award from

Class::MOP is a Meta Object Protocol for Perl 5.


# ... This will come later, for now see
# the other SYNOPSIS for more information

This module is an attempt to create a meta object protocol for the Perl 5 object system. It makes no attempt to change the behavior or characteristics of the Perl 5 object system, only to create a protocol for its manipulation and introspection.

That said, it does attempt to create the tools for building a rich set of extensions to the Perl 5 object system. Every attempt has been made for these tools to keep to the spirit of the Perl 5 object system that we all know and love.

This documentation is admittedly sparse on details, as time permits I will try to improve them. For now, I suggest looking at the items listed in the "SEE ALSO" section for more information. In particular the book "The Art of the Meta Object Protocol" was very influential in the development of this system.

What is a Meta Object Protocol?

A meta object protocol is an API to an object system.

To be more specific, it is a set of abstractions of the components of an object system (typically things like; classes, object, methods, object attributes, etc.). These abstractions can then be used to both inspect and manipulate the object system which they describe.

It can be said that there are two MOPs for any object system; the implicit MOP, and the explicit MOP. The implicit MOP handles things like method dispatch or inheritance, which happen automatically as part of how the object system works. The explicit MOP typically handles the introspection/reflection features of the object system. All object systems have implicit MOPs, without one, they would not work. Explict MOPs however as less common, and depending on the language can vary from restrictive (Reflection in Java or C#) to wide open (CLOS is a perfect example).


Class::MOP 0.35 keywords