| [reply] |
Yes THIS could be better.
it says:
How does Perl know which package the subroutine is in? By
looking at the left side of the arrow, which must be either
a package name or a reference to an object, i.e. something
that has been blessed to a package. Either way, that's the
package where Perl starts looking. If that package has no
subroutine with that name, Perl starts looking for it in
any base classes of that package, and so on.
...
The right side of the arrow typically is the method name,
but a simple scalar variable containing either the method
name or a subroutine reference can also be used.
If there was any paragraph saying something like
$obj->$coderef(@paras) is equivalent to $coderef->($obj,@paras) "no matter if the RHS and the LHS have any package relation"!
would be a much clearer definiton and avoiding the need to experiment. (well I'm not sure how to express the "no matter" part in clear English, but I hope the point is clear)
UPDATED: Typo in code. | [reply] [d/l] [select] |
| [reply] |
| [reply] [d/l] |
The second half of the documentation reads
the right side is a method name or a simple scalar variable containing either the method name or a subroutine reference, and the left side must be either an object (a blessed reference) or a class name (that is, a package name). See perlobj.
I don't see how it could be clearer that a reference is allowed.
| [reply] |
"either the method name or a subroutine reference",
Till now, I haven't run any tests, but it's not clear to read if it's a subroutine reference to a method or just to any subroutine.
some additional phrases and examples are missing!
It's perfectly possible that perl might do a check if the coderef is in the STASH of the class.
and I don't see why such a powerful feature should be hidden in 3 dispersed half-phrases in the perldocs.
| [reply] |
it's not clear to read if it's a subroutine reference to a method or just to any subroutine.
There's no such things as methods. There are methods calls and subroutine calls.
If you mean it's not clear whether the it's a method call or a subroutine call, what gives you the impression it can be anything but a method call?
| [reply] |