Arrow Operator
Just as in C and C++, the binary ->
operator is an infix dereference operator. If the right side is a [...]
array subscript, a {...}
hash subscript, or a (...)
subroutine argument list, the left side must be a reference (either hard or symbolic) to an array, a hash, or a subroutine, respectively. In an lvalue (assignable) context, if the left side is not a reference, it must be a location capable of holding a hard reference, in which case such a reference will be autovivified for you. For more on this (and some warnings about accidental autovivification) see "References".
$aref->[42] # an array dereference $href->{"corned beef"} # a hash dereference $sref->(1,2,3) # a subroutine dereference
Otherwise, it's a method call of some kind. The right side must be a method name (or a simple scalar variable containing the method name), and the left side must evaluate to either an object (a blessed reference) or a class name (that is, a package name):
$yogi = Bear->new("Yogi"); # a class method call $yogi->swipe($picnic); # an object method call
The method name may be qualified with a package name to indicate in which class to start searching for the method, or with the special package name,
SUPER::
, to indicate that the search should start in the parent class. See "Objects".