NAME Object::Simple - generate accessor with default, and provide constructor INSTALLATION cpan Object::Simple SYNOPSIS package YourClass; use base 'Object::Simple'; # Generate accessor __PACKAGE__->attr('x'); # Generate accessor with default (scalar) __PACKAGE__->attr(x => 0); # Generate accessor with default (reference or instance) __PACKAGE__->attr(x => sub { [] }); __PACKAGE__->attr(x => sub { {} }); __PACKAGE__->attr(x => sub { SomeClass->new }); # Generate accessors at once __PACKAGE__->attr([qw/x y z/]); # Generate accessors with default at once __PACKAGE__->attr([qw/x y z/] => 0); # Generate class accessor __PACKAGE__->class_attr('x'); __PACKAGE__->class_attr(x => 0); # Generate inheritable class accessor __PACKAGE__->class_attr('x', default => 0, inherit => 'scalar_copy'); __PACKAGE__->class_attr('x', default => sub { [] }, inherit => 'array_copy'); __PACKAGE__->class_attr('x', default => sub { {} }, inherit => 'hash_copy'); __PACKAGE__->class_attr( 'x', default => sub { SomeClass->new }, inherit => sub { shift->clone }); # Generate dual accessor, which work as normal accessor or class accessor __PACKAGE__->dual_attr('x'); __PACKAGE__->dual_attr(x => 0); # Generate inheritable dual accessor __PACKAGE__->dual_attr('x', default => 0, inherit => 'scalar_copy'); __PACKAGE__->dual_attr('x', default => sub { [] }, inherit => 'array_copy'); __PACKAGE__->dual_attr('x', default => sub { {} }, inherit => 'hash_copy'); __PACKAGE__->dual_attr( 'x', default => sub { SomeClass->new }, inherit => sub { shift->clone }); package main; # Constructor new() my $obj = YourClass->new; my $obj = YourClass->new(x => 1, y => 2); my $obj = YourClass->new({x => 1, y => 2}); # Set attribute $obj->x(1); # Setter method chain is available $obj->x(1)->y(2); # Get attribute my $x = $obj->x; DESCRIPTION Object::Simple is the generator of accessor. If you want to create a class, you must write many accessors by yourself, so you will be tired of writing accesors. Object::Simple help you to create accessor. COPYRIGHT AND LICENCE Copyright (C) 2008 Yuki Kimoto http://d.hatena.ne.jp/perlcodesample/ ( Japanese ) This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.