Well, method $obj $arg; would be an error. Update: Actually, that's not an error at all. rir++ for the catch. I updated the next paragraph to reflect this.
You can't distinguish between
because they are simply all instance methods. The last two listed there act just like the first one.method( $obj, $arg); $obj->method( $arg); method $obj $arg;
Similarly, you can't distinguish between
because they are all class methods. The first two act just like the last one. Update: Poor assumptions made there. See rir's reply and mine to him for more insight. Otherwise, replace those examples with:"Classname"->method( $arg); method "Classname" $arg; method( "Classname", $arg);
Class->method($arg); method Class $arg; Class::method("Class", $arg);
You can determine if the method was called as a class method or an instance method by checking the refness of the first argument but you can't determine the exact syntax.
Update: Sorry for the mess. As I understand the question, you want to know if, for example, a method can know whether it was invoked via indirect object notation, a normal sub call, or with the arrow operator. My answer: a very long "no."-sauoq "My two cents aren't worth a dime.";
In reply to Re: How called was &I?
by sauoq
in thread How called was &I?
by rir
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |