perrin is eminently right. Object Oriented Perl is based on three little rules, one of which states that methods are just subroutines which always receive a reference to the instance implementation (usually, but by no means always, a blessed hash) as their first argument. We might be misunderstanding what you are saying, but if you are passing $self (the ref to the instance) around yourself, something's wrong and you're not doing OO Perl.

And, again as perrin says, stay out of the symbol table if you don't know what you're doing - there be dragons there. Not that I know what I'm doing or have let that little fact stop me from messing around with the symbol table myself, but be warned that I have holes in my feet as a consequence.

A very good book (well, the book really) on Object Oriented Perl is, amazingly enough, Object Oriented Perl, by the_damian, aka Damian Conway.

One of the pieces of advice in this book is that it is a good idea that even your private methods use the class' public accessor methods to get at private instance attributes. That way, there's no frustating hunting through your code when you change the implementation of one of your attributes.

CU
Robartes-


In reply to Re: Instance field access from private methods by robartes
in thread Instance field access from private methods by markcsmith

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.