Tach auch!
{
%{$a}{'key1'} cmp %{$b}{'key1'}
}
Das Zeichen ganz vorne bei der Derefernzierung gibt den Datentyp an, der letztlich entstehen soll. Oder sagen wir's anders: Wenn Du auf key1 im Hash %hash zugreifen willst, schreibst Du ja auch $hash{'key1'} und nicht %hash{'key1'}. Da ist Perl immerhin konsistent, richtig waere also ${$a}{'key1'}. Da die geschweiften Klammern aber sowieso klarmachen, dass das was davor steht, ein Hash sein soll, kannst Du auch einfach $a->{'key1'} schreiben. Diesmal ist das $-Zeichen aber das ganz normale von $a (was ein Skalar (im speziellen eine Hashreferenz) ist). Das letztlich auch ein Skalar rauskommt, ist hier dadurch klar, dass in einem Hash unter einem bestimmten Key nunmal Skalare gepeichert werden. Wichtig ist bei $a->{'key1'} auf jeden Fall der -> Operator, denn der zeigt an, dass $a eine Referenz ist, die dereferenziert werden soll. (Wenn's am Ende in Wirklichkeit gar keine Ref ist, gibt's wieder ne Fehlermeldung.)
So long