Maybe it's better to add the functions to Moo.pm. So I copied Moo.pm to Moox.pm and put it in the lib directory. Then changed "package Moo;" to "package Moox;". And then added a few functions after 'has': (with apologies to Matt S. Trout)

_install_tracked $target => hasrw => sub { my @words = @_; if (@_ == 1 and $words[0] =~ m/ /) { # they passed a string with space separated words @words = split ' ', $words[0]; } push @words, 'is', 'rw'; # not sure if this is the right way to call has $MAKERS{Testpool}{exports}{has}->(@words); return; }; _install_tracked $target => hasro => sub { my @words = @_; if (@_ == 1 and $words[0] =~ m/ /) { @words = split ' ', $words[0]; } push @words, 'is', 'ro'; $MAKERS{Testpool}{exports}{has}->(@words); return; }; _install_tracked $target => hasrwd => sub { my ($name, $default) = @_; my @words = ($name, 'default', $default, 'is', 'rw'); $MAKERS{Testpool}{exports}{has}->(@words); return; }; _install_tracked $target => hasrod => sub { my ($name, $default) = @_; my @words = ($name, 'default', $default, 'is', 'ro'); $MAKERS{Testpool}{exports}{has}->(@words); return; };

Then other code can use it like this:

package Testpool { use Moox; # r/w attr defined by string hasrw 'name default samantha'; # ro attr defined by string hasro 'height default 1777'; # ro attr defined by list hasro qw/weight default 99/; # r/w attr with default value hasrwd 'cheezburgers', 22; # ro attr with default value hasrod 'cats', 1; };

In reply to Re^2: Extra-lazy object oriented programming by Anonymous Monk
in thread Extra-lazy object oriented programming by Anonymous Monk

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.