3. Subroutine calls and lookups of individual array elements arise often enough that it gets cumbersome to use method 2. As a form of syntactic sugar, the examples for method 2 may be written: $arrayref->[0] = "January"; # Array element $hashref->{"KEY"} = "VALUE"; # Hash element $coderef->(1,2,3); # Subroutine call The left side of the arrow can be any expression returning a reference, including a previous dereference. Note that `$array[$x]' is *not* the same thing as `$array->[$x]' here: $array[$x]->{"foo"}->[0] = "January"; This is one of the cases we mentioned earlier in which references could spring into existence when in an lvalue context. Before this statement, `$array[$x]' may have been undefined. If so, it's automatically defined with a hash reference so that we can look up `{"foo"}' in it. Likewise `$array[$x]->{"foo"}' will automatically get defined with an array reference so that we can look up `[0]' in it. This process is called *autovivification*.