====== Arrow Notation ======
===== Equivalence: =====
$array[$x]->{"foo"}->[0] = "January";
$array[$x]{"foo"}[0] = "January";
but
$array->[$x]{"foo"}[0] = "January"; (WRONG, as array is not a ref)
=====Derefencing====
${$arrayref}[0] = ${$arrayref}->[0] = $arrayref->[0] = "January";
${$hashref}{"KEY"} = ${$hashref}->{"KEY"} = $hashref->{"KEY"} = "VALUE";
${$coderef}(1,2,3) = ${$coderef}->(1,2,3) = $coderef->(1,2,3) Subroutine call or method object
${$aref}[3] $aref->[3] instead.
${$href}{red} $href->{red}
===== Rule#3 replace ${ } with -> =====
For scalar only, recommended
Compare
${$aref} [3]
$aref->[3]
${$href} {red}
$href->{red}
replace ${ }
by ->
As we can see it can only work with scalar dereferencing @array = @{$array_ref}
$objref = new Doggie( Tail => 'short', Ears => 'long' );
$objref = Doggie->new( Tail => 'short', Ears => 'long' ); (recommended)