Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Comment on

( #3333=superdoc: print w/ replies, xml ) Need Help??

This article is still in DRAFT.
Please do not vote on it or reply to it.
If you have any additions or corrections, please /msg them to me.


  • Inside-Out and Flyweight Objects in Perl
  • Modules for Object-Oriented Programming in Perl

  • General Articles

    Inside-Out and Flyweight Objects in Perl

    NB - Not guaranteed to be exhaustive

    Modules for Object-Oriented Programming in Perl

    Categorized Damian Modules

    In the following list, I have already filtered out any modules that appear too "light weight", i.e. those which, based on their description alone, don't seem to do enough interesting stuff to be worth installing. I have also skipped any modules that don't appear to address the problem space I'm interested in.

    OO-related modules by schwern:
    base I Establish IS-A relationship with base class at compile time
    fields A compile-time class fields
    foundation I Inheritance without objects
    mixin X an alternative to multiple inheritance
    parent I Establish an ISA relationship with base classes at compile time
    Class-Data-Inheritable AI Inheritable, overridable class data
    Class-Fields   class data utility functions
    Class-Object O each object is its own class
    Class-Virtual I Base class for virtual base classes.
    Class-WhiteHole I base class to treat unhandled method calls as errors
    Alter "Alter-ego" objects
    Aspect FP AOP for Perl
    Attribute-Property A Easy lvalue accessors with validation
    Attribute-Handlers   Simpler definition of attribute handlers (in some sense, a more open-ended but "safer" alternative to TIE)
    Basset  see Basset. Now what?
    Class-Accessor A Automated accessor generation
    Class-Adapter DP implementation of the Adapter Design Pattern; Class::Adapter::Clear - a Decorator base class.
    Class-AutoClass AI Automatically define simple get and set methods and automatically initialize objects in a (possibly mulitple) inheritance structure
    Class-BuildMethods A Lightweight implementation-agnostic generic methods (motiv.)
    Class-C3 I pragma to use the C3 method resolution order algorithm
    Class-ClassDecorator P Dynamically decorate classes instead of objects using NEXT; helps you use classes as decorators for other classes
    Class-Decorator OP Attach additional responsibilites to an object
    Class-Classless O framework for classless OOP
    Class-Closure B Encapsulated, declarative class style
    Class-Composite P Implements Composite patterns
    Class-Container P Glues object frameworks together transparently
    Class-Contract AIP Design-by-Contract OO
    Class-Delegate D easy-to-use implementation of object delegation
    Class-Delegation D Object-oriented delegation
    Class-Delegator D Simple and fast object-oriented delegation: subset of the functionality of Class::Delegation
    Class-Frame A Class template with default constructor and accessors autogenerated
    Class-Inner IO Java-like inner classes
    Class-InsideOut AIPa safe, simple inside-out object construction kit
    Class-Interfaces F for defining interface classes inline
    Class-MakeMethods A Generate common types of methods
    Class-MethodMaker A Create generic accessor methods that perform standard tasks
    Class-Meta AU Class automation, introspection, and data validation; accessor generation
    Class-MixinFactory X
    Class-Generate A Generate Perl class hierarchies (from specs)
    Class-Modular AO Modular class generation superclass - between Class-Mutator and true classless OOP, like Class-Classless
    Class-MOP 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.
    Class-Mutator X Run-time Dynamic Multiple Inheritance
    Class-Observable P Allow other classes and objects to respond to events in yours
    Class-Prototyped O Fast prototype-based OO programming in Perl
    Class-Publisher R A simple publish-subscribe event framework - based on Class::Observable
    Class-Spiffy  Spiffy but without source filtering
    Class-Std AIPSupport for creating "standard" inside-out classes. Warning
    Class-Struct A 
    Class-Struct-FIELDS A - Combine Class-Struct, base, and fields
    Class-Tangram A 
    Class-Trait Traits
    Class-Translucent A 
    Class-Wrapper ADP 
    EO  a well tested, solid, simple, and long living base class that other modules can rely on.
    Hash::Util::FieldHash Support for Inside-Out Classes. Is core as of Perl 5.10.
    Moose an extension of the Perl 5 object system. built on Class-MOP. Larry has said, "Moose is essentially a prototype of Perl 6's object model. On a semantic level, anyway." Find related posts
    Mouse Moose compatible object system, with no external dependences and fast start-up time
    Moo light-weight, high-performance Moose replacement
    OOTools F 
    Object-Generic A generic base class that allows storage of key/value pairs
    Object-InsideOut AIcomprehensive support for implementing classes using the inside-out object model
    Object-Interface F allows specification of an abstract base class (aka pure virtual class)
    Object-Lexical D Syntactic Sugar for Easy Object Instance Data & More
    Object-LocalVars D Outside-in objects with local aliasing of $self and object variables
    Object-Meta-Plugin OX a classless compound object implementation or a base class for an element of thereof.
    Object::Tiny ALike Class::Accessor::Fast, but "better, faster or cheaper on every single metric"
    Spiffy; Spoon   


    B Framework, kitchen sink, ball-o-wax
    R Run-time interaction management/framework
    A Creation of classes based on specification of data members/attributes, including generation of accessors
    I Management of inheritance
    O Per-object methods, class-less OO
    F Interfaces
    X Mixins
    D Other alternatives to inheritance; alternatives to Perl's default OO scheme
    P other Patterns
    U class utility functions, meta-data management

    Plus there's a bunch of modules in the Class::Accessor:: namespace.

    In reply to Survey of POOP Modules (draft; please do not vote or reply) by jdporter
    in thread jdporter by jdporter

    Use:  <p> text here (a paragraph) </p>
    and:  <code> code here </code>
    to format your post; it's "PerlMonks-approved HTML":

  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?

    What's my password?
    Create A New User
    and the web crawler heard nothing...

    How do I use this? | Other CB clients
    Other Users?
    Others making s'mores by the fire in the courtyard of the Monastery: (4)
    As of 2016-07-24 10:41 GMT
    Find Nodes?
      Voting Booth?
      What is your favorite alternate name for a (specific) keyboard key?

      Results (221 votes). Check out past polls.