The Arrow Operator (Programming Perl) Book Home Programming PerlSearch this book

3.2. The 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 Chapter 8, "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 Chapter 12, "Objects".



Library Navigation Links

Copyright © 2001 O'Reilly & Associates. All rights reserved.