NAME Class::Lego::Constructor - Automated constructor generation SYNOPSIS BEGIN { require Class::Lego::Constructor; @ISA = qw( Class::Lego::Constructor ); } __PACKAGE__->mk_constructor0({ magical_number => 42, timestamp => sub { DateTime->new }, # deferred }); # the weird name, mk_constructor0, is on purpose while API settles __PACKAGE__->mk_constructor1({ magical_number => { default => 42 }, timestamp => { default => sub { DateTime->new } }, sort_function => { default_value => sub { $a <=> $b } }, # really a sub }); DESCRIPTION NOTE: That module was formely called Class::Constructor::Factory. It will enter the Class-Lego dist soon. I like the simplicity of Class::Accessor and friends. With them, creating accessors is a piece of cake. It does give me a default constructor as well. The case is that this default constructor is not as convenient as the generated accessors. To be precise, I want to specify default values for attributes easily. This module is a tentative solution to this problem. --- The intent of this module is to augment an existing constructor `new' which receives a hash ref argument containing pairs of field names versus their values. $obj = My::Class->new( { f1 => v1, f2 => v2 } ); When a declared field is omitted from the constructor argument, it can be filled with a default which was declared with `mk_constructor0'. default default_value make_simple_constructor