On Sat, Dec 13, 2003 at 12:07:40PM -0500, Austin Hastings wrote:
: > From: Larry Wall [mailto:[EMAIL PROTECTED]
: > The behavior probably doesn't expire unless you've cloned the object
: > and the clone expires. However, if a role goes out of its lexical
: > scope, it can't be named, so it's effectively not usable unless you
: > dig out a name for it via reflection. But the information is still
: > cached there, so the object could be smarter the next time it takes
: > on the same role.
:
: It's a role closure, in other words?
Erm. That's a fancy word, and I don't claim to know what it means
all the time. I suspect the name of the role is closed but the role
itself isn't. Alice: "If the name of the role is called Teach..."
: That being the case, how to you unapply a role?
:
: $frank does no Teach;
:
: $frank doesnt Teach;
$frank.role_manager(
action => "delete",
mode => "override_all_safety_mechanisms",
name_the_role_is_called => "Teach"
);
Or something like that. :-)
: > That being said, a role applied with C<temp> probably *should* be
: > stripped out when it goes out of scope. Could get messy though...
:
: I can't think of a way to apply a role with temp (to a non-temp object). How
: do you do it?
Well, we did set up a way for a method to be temporizable, so it
probably comes down to whether C<but> is just syntactic sugar for a
method call that knows how to undo itself.
Larry