Class::ObjectTemplate - Perl extension for an optimized template builder base class.


  package Foo;
  use Class::ObjectTemplate;
  require Exporter;
  @ISA = qw(Class::ObjectTemplate Exporter);

  attributes('one', 'two', 'three');

  # initialize will be called by new()
  sub initialize {
    my $self = shift;
    $self->three(1) unless defined $self->three();

  use Foo;
  $foo = Foo->new();

  # store 27 in the 'one' attribute

  # check the value in the 'two' attribute
  die "should be undefined" if defined $foo->two();

  # set using the utility method

  # check using the utility method
  $two = $foo->get_attribute('two');

  # set more than one attribute using the named parameter style
  $foo->set_attributes('one'=>27, 'two'=>42);

  # or using array references

  # get more than one attribute
  @list = $foo->get_attributes('one', 'two');

  # get a list of all attributes known by an object
  @attrs = $foo->get_attribute_names();

  # check that initialize() is called properly
  die "initialize didn't set three()" unless $foo->three();


Class::ObjectTemplate is a utility class to assist in the building of other Object Oriented Perl classes.

It was described in detail in the O\'Reilly book, "Advanced Perl Programming" by Sriram Srinivasam.



This method creates a shared setter and getter methods for every name in the list. The method also creates the class constructor, new().

WARNING: This method must be invoked within the module for every class that inherits from Class::ObjectTemplate, even if that class defines no attributes. For a class defining no new attributes, it should invoke attributes() with no arguments.


Original code by Sriram Srinivasam.

Fixes and CPAN module by Jason E. Stewart (