Calocybe: Hash lässt gleichwertige Schlüssel unter den Tisch fallen ?

Beitrag lesen

  1. Ich zitiere mal Andreas' Posting:

Nein. Es liegt in der Natur des Hashs, daß zu jedem Schlüssel genau ein Wert gespeichert wird.
Wenn Du einen zweiten Wert unter dem selben Schlüssel ablegst, wird der erste ersetzt.

Du könntest aber als Werte Listen verwenden, dann kannst Du zu einem Schlüssel die verschiedenen Werte in dieser Liste unterbringen.

Jetzt werd ich dir mal erzählen wie ich das verstanden habe:
Ich habe daraus gelesen, daß er meinte, daß ich unter einem HashSchlüssel nur einen Wert speichern kann, also nur Name=wert1, und nicht Name=Wert1Wert2 oder was auch immer.

Na wunderbar, genau das war ja auch gemeint.

Mit dem zweiten Teil meinte er dann, dass Du mehrere Werte in ein Array stecken kannst und eine Referenz auf dieses Array dann als Wert in den Hash schreiben. Etwa
  $hash{'datum'} = [$wert1, $wert2];    # genau die Art der Klammern beachten!
Mit @{$hash{'datum'}} bekommst Du dann ein normales Array zurueck, die die beiden Werte enthaelt. Siehe dazu perldoc perllol und perldoc perldsc.

Wenn man den Satz mal genauer ansieht:
Wenn Du einen zweiten Wert unter dem selben Schlüssel ablegst, wird der erste ersetzt.

Das "der erste" könnte sich auch auf "Wert" beziehen, und so habe ich das zuerst auch gelesen (= grammatikalisch zweideutig).

Gut, so war es ja auch gemeint: Der Wert, der urspruenglich unter dem Schluessel abgelegt war, wird durch den neuen ersetzt.
(Waere gemeint gewesen, dass der erste *Schluessel* ersetzt wird, die Schluessel aber sowieso die gleichen sind, haette sich dann ja effektiv nichts getan. Der Satz waere dann voellig sinnlos gewesen.)

Nun frage ich mich, wenn Du die Saetze schon semantisch richtig verstanden hast, wo dann das Problem lag? Deinen Fehler hat Andreas damit genau gefunden, was hat Dich also zu der Vermutung veranlasst, jemand hat was falsch verstanden? Dass Andreas davon genervt war, ist nur verstaendlich.

Und deswegen muss ich mich also von dir und AndreasW anpfauchen lassen? Das kann man auch ganz anders sagen.

Ganz ruhig. Zieh Dir erst mal ne Kanne Kaffee oder ne Packung Traubenzucker rein, und dann denk nochmal in Ruhe drueber nach. Und probier einfach mit ein paar Testscripts rum, wie Hashs funktionieren, dann wird das schon. Wenn Du mit den komplexeren Datenstrukturen aus perldsc rumprobierst, empfiehlt sich
  use Data::Dumper;
  print Dumper(%hash);
um sich die Struktur anzusehen.

So long

--
Was ist der Unterschied zwischen "Jurassic Park" und Mircosoft? Bei dem einen macht ein Verrückter Geschäftsmann mit Biestern, die schon längst ausgestorben sein sollten, ein Vermögen, und das andere ist ein Film von Steven Spielberg.