but the framers of the system decided this was the normal thing to do

How so? They didn't do anything to hinder what you want to do whatsoever.

around BUILDARGS => sub { my $orig = shift; my $class = shift; ... return $class->$orig(...); };

is slightly more wordy than

sub new { my $class = shift; ... return $class->SUPER::new(...); }

But surely you don't have a problem with that??

(Upd: By the way, you can use the latter, but overriding BUILDARGS allows Moose to do some optimisations. )

Second, what is the point of a read-only attribute? If it can't be set, it will never exist. There must be some "but..." in there.

is => 'ro' is simply a shortcut for reader => $name, and is => 'rw' is simply a shortcut for accessor => $name. It's more "write-once" than "read-only" since neither prevents the the constructor from initialising the attribute, and neither prevents defaults (including those that may be determined from other fields or from external data) from initialising the attribute.

So how do I make attributes that are for internal use?

has attr => ( reader => '_get_attr', writer => '_set_attr', handles => { get_attr => sub { ... }, set_attr => sub { ... }, }, )

(Upd: Sorry, I thought you were asking about internal use accessors. )


In reply to Re: Psychic Disconnect and Object Systems by ikegami
in thread Psychic Disconnect and Object Systems by John M. Dlugosz

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.