> > It's an idea that within a method call, the object reference would
> > not be passed as the first argument (or maybe, not *just* as the
> > first argument), but in a variable named $ME. I was pushing that
> > envelope a little.
>
> Is this RFC'ed yet?
It may have been mentioned in Andy Wardley's treatise, but I think
it warrants it's own RFC.
> If not, I'll do it
Fine by me.
> I think that $ME should NOT be passed in @_ at all. It's a PITA right
> now to deal with (function vs. object forms, trying to support both).
> $ME should simply be the name of the class it's called as a member of,
> falling back to the name of the package if one isn't defined (as in a
> function-oriented style).
Errr. I would imagine that $ME contains:
* a reference to the object, within an object method
* the name of the class, within a class method
* a reference to the *subroutine* itself, within a non-method.
> P.S. Alternatives to $ME are welcomed, but please email these JUST to
> me. Naming always seems to generate tons of messages. I'll just list the
> alternatives under "alternative names" at the bottom of the RFC. Thanks.
Don't give alternatives. Give a "these alternatives were considered and
*rejected*" list. $ME is capitalized (like all "magic" vars), and short.
And don't forget to include my idea that $ME be scoped locally like
$AUTOLOAD, so that the "self" and "this" and "I" and "myself" camps can
have their respective cakes but the rest of us don't have to eat them:
package MyClass_Std;
sub name($newval) {
$ME->{name} = $newval if @_;
return $ME->{name};
}
package MyClass_Selfish;
sub self() {$ME};
sub name($newval) {
self->{name} = $newval if @_;
return self->{name};
}
package MyClass_Thisly;
sub this() {$ME};
sub name($newval) {
this->{name} = $newval if @_;
return this->{name};
}
package MyClass_ValleySpeak;
sub me_myself_personally() {$ME};
sub name($newval) {
me_myself_personally->{name} = $newval if @_;
return me_myself_personally->{name};
}
:-)
Damian