3.2. The Arrow OperatorJust 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 Chapter 8, "References". 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):$aref->[42] # an array dereference $href->{"corned beef"} # a hash dereference $sref->(1,2,3) # a subroutine dereference 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 Chapter 12, "Objects".$yogi = Bear->new("Yogi"); # a class method call $yogi->swipe($picnic); # an object method call Copyright © 2002 O'Reilly & Associates. All rights reserved. |
|