Class::Accessor::Ref - Access members by reference The typical Perl OOP module uses a blessed hash to store an object, with hash keys representing intance members. Using these members directly can be dangerous, because: 1. if you have a typo in the member name, all you get is (at best) a warning and a member with the wrong name is autovivified; 2. from an OOP point of view, accessing members directly breaks the class encapsulation, if done outside the class implementation. There exist several good modules on CPAN that solve these problems; I like Class::Accessor the best. But none of these modules provide a way to take a reference to a member variable, a common enough desire, for example if you're using an API that expects in/out parameters. In fact, most of the accessor modules don't let you do simple stuff like modifying a member (in a safe way) without a temporary variable. Here's a typical Class::Accessor example: my $tmp = $obj->member; $tmp =~ s/some/substitution/; $obj->member($tmp); Class::Accessor::Ref helps with all these issues. It is a subclass of Class::Accessor, and setting it up can be as simple as a global s/Class::Accessor/$&::Ref/g in your code. In addition to the regular accessors provided by Class::Accessor, you also get the generic reference getter get_ref, which can be used thus: ${ $obj->get_ref('member') } =~ s/some/substitution/; And also, for each member foo, you get a reference accessor _ref_foo: ${ $obj->_ref_member } =~ s/some/substitution/; It is up to you to choose which you prefer. In either case, if you have a typo in the member name, you will get an exception thrown. Of course, this also works with APIs expecting in/out parameters, so you can call Some::API::scale_rectangle($factor, $obj->_ref_minx, $obj->_ref_miny, $obj->_ref_maxx, $obj->_ref_maxy); See the POD documentation for more details.