Wie werden zwei Hashes zu einem vereint?
Zwei Hashes
my %hash1 = (1 .. 8);
my %hash2 = (4 .. 11);
koennen z.B. auf diese beide Arten zusammengefuehrt werden:
Linearisierung
my %hash3 = (%hash1, %hash2);
Hier wird ein neuer Hash %hash3 angelegt, wobei die Schluessel aus %hash2 die von %hash1
ueberdecken. Die Hashes werden linearisiert, aus
(%hash1, %hash2)
wird
also
(key1_aus_hash1, value1_aus_hash1, ..., key1_aus_hash2, value1_aus_hash2, ...)
.
Diese Liste wird dann %hash3 zugewiesen. Je zwei Elemente werden zu einem neuen Key/Value Paar.
Beachte, dass hierbei ein dritte Hash, %hash3, benutzt wird. Es ist durchaus moeglich, die linearisierte Liste
%hash1 oder %hash2 zuzuweisen. Ausserdem kann diese Variante beliebig viele Hashes zusammenfuehren.
Hash Slice
@hash1{keys %hash2} = values %hash2;
Das ist ein
HashSlice?. Der Hash %hash1 wird nicht mit einem einzigen Schluessel addressiert,
sondern mit den Schluesseln aus %hash2. Das Ergebnis ist eine Liste von zuweisbaren Variablen,
denen wir sogleich die Werte von %hash2 zuordnen.
Hier ueberdeckt %hash2 die Schluessel aus %hash1 (in einem hash sind die Schluessel eindeutig!).
Wenn du die zwei Hashes vertauscht, dann geschieht die Ueberdeckung genau andersrum.
Ergänzungen, Kommentare
Kommentare werden am besten in folgender Form vorgenommen, damit
sie im Inhaltsverzeichnis angezeigt werden (natürlich ohne das <verbatim>):
---+++ Main.??? - 14 Jul 2003 - Betreff