If I understand you correctly, you have a cache object. You want to be able to add methods to it at runtime, and some of those methods might need to manipulate the internals of the cache object.
btrott's technique is good -- that's probably the cleanest way to continue what you're doing. Add some methods to access the cache, and any subroutines added through references don't have to know the particulars about how the cache is implemented.
Another option (which I do not recommend if there's any other way around it) is to switch to your object's package and define a new subroutine or install one in the package's symbol table:
package main;
# some stuff here
package RadCache;
sub mangle_cache {
# do this and that
}
or
package main;
# stuff here
my $sub_ref = sub { print "Messing with the cache.\n" };
*RadCache::mangle_cache = $sub_ref; # syntax may be a little off
I think you'd be better off just subclassing your cache object whenever you need to add a callback that works on the internals of the object. That may make your design easier to understand, anyway.
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.