Kurt: hashes of hashes

Beitrag lesen

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