Provided by: libaccessors-perl_1.01-2_all bug


       accessors::ro - create 'classic' read-only accessor methods in caller's package.


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

         my $obj = bless { foo => 'read only? ' }, 'Foo';

         # values are read-only, so set is disabled:
         print "oh my!\n" if $obj->foo( "set?" ) eq 'read only? ';

         # if you really need to change the vars,
         # you must use direct-variable-access:
         $obj->{bar} = 'i need a drink ';
         $obj->{baz} = 'now';

         # always returns the current value:
         print $obj->foo, $obj->bar, $obj->baz, "!\n";


       The accessors::ro pragma lets you create simple classic read-only accessors at compile-

       The generated methods look like this:

         sub foo {
             my $self = shift;
             return $self->{foo};

       They always return the current value, just like accessors::ro.


       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 0-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.


       Classes using blessed scalarrefs, arrayrefs, etc. are not supported for sake of
       simplicity.  Only hashrefs are supported.


       Steve Purkis <>


       accessors, accessors::rw, accessors::classic, accessors::chained, base