NAME Object::AutoAccessor - Accessor class by using AUTOLOAD SYNOPSIS use Object::AutoAccessor; my $obj = Object::AutoAccessor->new(); # setter methods $obj->foo('bar'); $obj->set_foo('bar'); $obj->param(foo => 'bar'); # getter methods $obj->foo(); $obj->get_foo(); $obj->param('foo'); # set/get array $obj->array([qw(foo bar)]); $obj->push(array => 'baz'); my $baz = $obj->pop('array'); my $foobar = $obj->join(',', 'array'); # got 'foo,bar' # set/get hash $obj->hash(+{ foo => 'fooval', bar => 'barval' }); my $hashref = $obj->hash; my @keys = $obj->keys('hash'); my @values = $obj->values('hash'); my ($key, $val) = $obj->each('hash'); # set/get coderef $obj->code(sub { print "CODEREF\n" }); my $code = $obj->code; $code->(); # set/get globref $obj->glob(\*STDOUT); my $glob = $obj->glob; print $glob "Hello\n"; # is_hashref/arrayref/coderef/globref/scalar $obj->is_hashref('hash'); $obj->is_arrayref('array'); $obj->is_coderef('code'); $obj->is_globref('glob'); $obj->is_scalar('foo'); # $obj->param() is compatible with HTML::Template->param() my @keywords = $obj->param(); my $val = $obj->param('hash'); $obj->param(key => 'val'); DESCRIPTION Object::AutoAccessor is a Accessor class to get/set values by AUTOLOADed method automatically, and also can use various methods of the same name as built-in functions such as push() , pop() , each() , join() , length() , sprintf() and so on. Moreover, param() is compatible with "HTML::Template" module, so you can use Object::AutoAccessor object for "HTML::Template"'s "associate" option. METHODS new ( [ OPTIONS ] ) Create a new Object::AutoAccessor object. Then you can use several options to control object's behavior. * autoload If set to 0, the object cannot use the AUTOLOADed-accessor-method such as foo() , set_foo() and get_foo() but param() . Defaults to 1. * bindstyle If set to 'sql', behavior of bind() method changes into SQL-style-quoting. Defaults to 'normal' or undef. renew ( [ OPTIONS ] ) Create a new Object::AutoAccessor object to remaining current options. new_child ( NAME, [ OPTIONS ] ) Create a new Object::AutoAccessor object as child instance by renew() . child ( NAME, [ NAME, ... ] ) An accessor method for child instance of Object::AutoAccessor object. children ( NAME, [ NAME, ... ] ) an alias for child() . has_child ( NAME ) If object has child instance then it return TRUE. KEY ( [ VALUE ] ) This method provides an accessor that methodname is same as keyname by using AUTOLOAD mechanism. # setter methods $obj->foo('bar'); $obj->set_foo('bar'); $obj->param(foo => 'bar'); # getter methods $obj->foo(); $obj->get_foo(); $obj->param('foo'); param ( [ KEY => VALUE, ... ] ) This method is compatible with param() method of HTML::Template module. # set value $obj->param(foo => 'bar'); $obj->param( foo => 'bar', bar => [qw(1 2 3)], baz => { one => 1, two => 2, three => 3 } ); # get value $obj->param('foo'); # got 'bar' # get list keys of parameters @keys = $obj->param(); autoload ( BOOLEAN ) This is the method to switch behavior of the AUTOLOADed-accessor-method. If set to 0, the object cannot use the AUTOLOADed-accessor-method such as foo() , set_foo() and get_foo() but param() . $obj->new_child('foo')->param(bar => 'baz'); $obj->autoload(1); $baz = $obj->foo->bar; # OK $obj->autoload(0); $baz = $obj->child('foo')->param('bar'); # OK $baz = $obj->foo->bar; # NG bind ( KEY, BIND ) This method provides a simple replacing mechanism that changes *placeholder* to bindings just looks like execute() method of DBI. $obj->sentence(q{What is the ? ? in ?\?}); # $result is "What is the highest mountain in Japan?" $result = $obj->bind(sentence => qw(highest mountain Japan)); bindstyle ( STYLE ) If you want SQL-style-quoting, use bindstyle() and set value 'sql'. @binds = ('bar' "It's OK" '-0.123'); $obj->bindstyle('sql'); $obj->statement(q{SELECT * FROM foo WHERE BAR = ? AND BAZ = ? AND DECIMAL = ?}); # $result is "SELECT * FROM foo WHERE BAR = 'bar' AND BAZ = 'It''s OK' AND DECIMAL = -0.123" $result = $obj->bind(statement => @binds); as_hashref () As shown in name. :) AUTHOR Copyright 2005-2006 Michiya Honda, All rights reserved. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. SEE ALSO HTML::Template.