I think you are trying to solve the wrong problem.

First of all, gratuitous globals is a sign of a poor design. I would use an access function, and (depending on what made sense) I would have it memoize results. Much cleaner design, and your issue never arises. Unless your program is truly performance sensitive (the odds are very low that it is), trying to optimize before hand at the expense of maintainability is a losing game.

However the second issue is technical. In the middle of calling an implementation of a tie, you don't have access to information about the tie. A tie just replaces a data structure with a wrapper around an object. But from the point of view of the object call, it is just an object call. You are not told what variable you are being called with, and said variable may not even be in any scope you can access. (Think about tying a lexical variable.)

Now the technical issue I could find a hack around. But the maintainability issue makes me really not want to...


In reply to Re (tilly) 3: Using tie to initialize large datastructures by tilly
in thread Using tie to initialize large datastructures by htoug

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.