What does the -> arrow do in Perl?
Solution 1:
See The Arrow Operator in perlop:
"
->
" is an infix dereference operator, just as it is in C and C++. If the right side is either a[...]
,{...}
, or a(...)
subscript, then the left side must be either a hard or symbolic reference to an array, a hash, or a subroutine respectively. (Or technically speaking, a location capable of holding a hard reference, if it's an array or hash reference being used for assignment.) See perlreftut and perlref.Otherwise, 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.
Solution 2:
In general, ->
hints at dereference. This syntax comes from C.
In your example, it means method call: call method links
from the object instance in $m
. This is explained in the chapter Objects in Modern Perl. Pieces of perlsub, perlfaq7, perlobj, perltoot provide the details.
For references in general, search Stack Overflow; it is a recurring topic.
Solution 3:
Perl arrow operator has one other use:
Class−>method invokes subroutine method in package Class
though it's completely different than your code sample. Only including it for completeness for the question in the title.