in reply to Re^3: Moose object construction
in thread Moose object construction

Thanks for this. I wasn't aware that you could have a writer defined for a ro attribute. It still seems wrong to me that a writer should exist, and work, on a ro attribute, but it does solve the problem.

Replies are listed 'Best First'.
Re^5: Moose object construction
by stvn (Monsignor) on Feb 11, 2011 at 00:47 UTC
    It still seems wrong to me that a writer should exist, and work, on a ro attribute

    Well, really the 'ro' and 'rw' are just shorthand for the various combinations of 'reader', 'writer' and 'accessor'. So a 'ro' attribute is just shorthand for:

    has 'foo' => ( reader => 'foo' );
    And a 'rw' attribute is just shorthand for:
    has 'foo' => ( accessor => 'foo' );
    It is also quite possible to do really weird things like:
    has 'foo' => ( reader => 'get_foo', writer => 'set_foo', accessor => ' +foo' );
    which may seem odd, but could be very useful in some situations where the API requires it. This is all part of Moose's policy to provide the best practices at your fingertips, but not get in the way when you need to do something weird, which if you think about it is not all that different from Perl itself.

    -stvn
      Thank you all for suggestions!