It uses trickery from the Scalar::Util module. There were a lot of gotchas involved -- avoiding autovivification and avoiding strengthening weak references by copying. Limitations are that you've got to pass a closure and create the object in that. And it's totally destructive (at least it is when the test is successful). Anything returned by the closure is potentially (and hopefully) gone forever.
Perhaps the most severe limitation is that it can't have references to any globals or any memory which is supposed to hang around -- it's not smart about that, but just assumes everything must go. If there's interest I may in a future version allow the caller to specify exceptions
The basic trick is to create weak references to the strong references and strong references to the weak references, free up the base reference, and see if all the others go to undefined. I've just added some code to make it smart about undefs in the original object.
I'll get it on CPAN in a couple of days, and you'll be able to read the code. It's not long.
jeffrey
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: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.