Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
accessors::ro(3)      User Contributed Perl Documentation     accessors::ro(3)

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

SYNOPSIS
	 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";

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

       The generated methods look like this:

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

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

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

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

       o   typically 0-15% slower than optimized accessors (less readable).

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

       o   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 scalarrefs, arrayrefs, etc. are not supported for
       sake of simplicity.  Only hashrefs are supported.

AUTHOR
       Steve Purkis <spurkis@cpan.org>

SEE ALSO
       accessors, accessors::rw, accessors::classic, accessors::chained, base

perl v5.24.1			  2017-07-02		      accessors::ro(3)

NAME | SYNOPSIS | DESCRIPTION | PERFORMANCE | CAVEATS | AUTHOR | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=accessors::ro&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help