Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask

Survey of POOP Modules (draft; please do not vote or reply)

by jdporter (Canon)
on Jun 20, 2006 at 14:41 UTC ( #556407=note: print w/ replies, xml ) Need Help??

in reply to jdporter's treehouse
in thread jdporter

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.

    • Comment on Survey of POOP Modules (draft; please do not vote or reply)

    Log In?

    What's my password?
    Create A New User
    Node Status?
    node history
    Node Type: note [id://556407]
    and the web crawler heard nothing...

    How do I use this? | Other CB clients
    Other Users?
    Others cooling their heels in the Monastery: (4)
    As of 2016-08-26 09:49 GMT
    Find Nodes?
      Voting Booth?
      The best thing I ever won in a lottery was:

      Results (367 votes). Check out past polls.