Your example works fine, and it will continue to work fine, but it loses one of the advantages of inside-out objects. With the usual way, if you mistype an attribute name somewhere (and you use strict), Perl will cough up an error message before it even runs anything.

sub get_x { return $xc00rd{refaddr $_[0]}; # oh noez! }

The way you have it, Perl will just autovivify the attribute you hadn't created before.

sub get_x { # $coord{refaddr $_[0]}->{'X'} == 42 return $coord{refaddr $_[0]}->{'ex'}; # but this is undef }

This can lead to subtle and difficult bugs down the line, but only if you ever make mistakes while typing.

As an aside, consider using a framework to make inside-out classes easier (such as Object::InsideOut or Class::Std). These will create constructors, destructors, and accessors for you.


In reply to Re: Inside Out Classes and the internal Hashes by kyle
in thread Inside Out Classes and the internal Hashes by KurtSchwind

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.