Hi
Hm, könntest Du mir das mal logisch erklären? ;)
meine Abneigung? Klar!
Die Derefenzierungsregeln haben lauter inkompatible Ausnahmeregeln.
z.B ist
$hash{dim1}{dim2}{dim3}
eine Kurzschreibung für
$hash{dim1}->{dim2}->{dim3}
aber
$ref{dim1}
ist KEINE Kurzschreibung für
$ref->{dim1} bzw $$ref{dim1}
sondern bestenfalls für
%ref->{dim1}
Diese Inkosistenz hat soviele in den Wahnsinn getrieben, das in Perl6 radikal aufgeräumt wird.
Dort steht
%hash{'dim1'} dann für das Hashelement (statt perl5 $hash{dim1})
sodass eindeutig gilt
$ref{'dim1'} == $ref->{'dim1'}
Man kann also von links nach rechts lesend verstehen was für ein Variablentyp dem Sigil folgt ... hier folgt auf $ immer ein Skalar/Referenz und nie der Name eines Hashs oder Arrays.
Dieser syntaktische Bruch wird aber m.E. die meisten Kompatibilitätsprobleme beim migrieren von perl5 Code erzeugen...
Bye
Kurt