NAME

accessors::classic - create classic accessors in caller's package.

SYNOPSIS

package Foo;
use accessors::classic qw( foo bar baz );

my $obj = bless {}, 'Foo';

# always return the current value, even on set:
$obj->foo( 'hello ' ) if $obj->bar( 'world' );

print $obj->foo, $obj->bar, $obj->baz( "!\n" );

DESCRIPTION

The accessors::classic pragma lets you create simple classic Perl accessors at compile-time.

The generated methods look like this:

sub foo {
    my $self = shift;
    $self->{foo} = shift if (@_);
    return $self->{foo};
}

They always return the current value.

PERFORMANCE

There is little-to-no performace hit when using generated accessors; in fact there is usually a performance gain.

  • typically 5-15% faster than hard-coded accessors (like the above example).

  • typically 1-15% slower than optimized accessors (less readable).

  • typically a small performance hit at startup (accessors are created at compile-time).

  • uses the same anonymous sub to reduce memory consumption (sometimes by 80%).

See the benchmark tests included with this distribution for more details.

CAVEATS

Classes using blessed scalars or arrays are not supported.

AUTHOR

Steve Purkis <spurkis@epn.nu>

SEE ALSO

accessor, accessors::chained, base