Hello Basil,

Basil A. Daoust schrieb am Thu, Jun 26, 2008 at 03:08:26AM -0500:
> Why does $hashref->{attributes}{charset} and 
> $hashref->{attributes}->{charset} work
> and this fails $hashref{attributes}{charset}?

The strictest way to write this is:

    %{$hashref}                            is a hash (like %{hash})
    ${$hashref}{'attributes'}              is an element (like ${hash}{'key'})
 %{ ${$hashref}{'attributes'} }            is a hash 
 ${ ${$hashref}{'attributes'} }{'charset'} is an element

Now, you can abbreviate:

     %{$hashref}                  as   %$hashref
     ${$hashref}{'attributes'}    as   $$hashref{'attributes'}
                                  as   $$hashref{attributes}
                                  or    $hashref->{'attributes'}
                                  as    $hashref->{attributes}
  %{ ${$hashref}{'attributes'} }  as  %{$$hashref{'attributes'}}
                                  as  %{$$hashref{attributes}}
                                  or  %{$hashref->{'attributes'}}
                                  as  %{$hashref->{attributes}}

       ${ ${$hashref}{'attributes'} }{'charset'}
    as ${ ${$hashref}{attributes}   }{charset}
    as ${  $$hashref{attributes}    }{charset}
    or ${   $hashref->{attributes}  }{charset}
    as      $hashref->{attributes}->{charset}
    as      $hashref->{attributes}{charset}

The last step is:
The arrow '->' is optional between braces, brackets and parantheses.

Note:
  $hashref->{attributes}  is an element of %{$hashref}
  $hashref{attributes}    is an element of   %hashref

For details, see perlref(1).

This is perl.
There is more than one way to write it up.
There is more than one way to screw it up.

Yours,
  Ingo
_______________________________________________
ActivePerl mailing list
ActivePerl@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to