This depends on your design decisions!

Looks like you have a bidirectional membership relation, implemented with references (which isn't the only way to do it, see below)

If I were you I'd first think hard about the membership semantics you want and consequently how deletion is supposed to work.

What are your desired N to M relations ?

And after that deletion semantics

Most of us have more or less similar answers based on experience with filesystem operations, but yours might be different. But FS differ and some have inodes, symlinks, hardlinks, etc...

Furthermore: as indicated, you don't necessarily need to use (circular) references to design this relation. Like with symbols for references

So you could also have class variables'%instance' collecting objects for each class (i.e. all files, all directories) with identifiers as keys and object references as values. (A possible natural unique ID is just the stringification of the reference plus timestamp)

Just store the related IDs now in the objects

Of course you'll have to design the necessary delete or DESTROY methods now on your own, to clean up broken relations after an object is deleted.

Cheers Rolf
(addicted to the Perl Programming Language :)
see Wikisyntax for the Monastery


In reply to Re: Should I use weaken on an object attribute containing a reference to an object which contains reference back to original object? (design decisions) by LanX
in thread Should I use weaken on an object attribute containing a reference to an object which contains reference back to original object? by nysus

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.