In Perl können wir geben Sie zwei Werte für den gleichen Schlüssel in einem hash ohne zu verlieren(überschreiben) ersten?
nachdem ich deklariere ein hash in perl
%hash1=(a=>"turkey",
b=>"india",
c=>"england",
d=>"usa")
wenn ich einen neuen Wert zuweisen, um bereits vorhandene Schlüssel wie
$hash1{d}="australia";
ich verliere den vorherigen Wert mit der Taste 'd' ich.e "usa", weil wenn ich
print %hash1;
ich sehe nicht den Wert "usa"...so behalten Sie sowohl die Werte für denselben Schlüssel?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen hash-Schlüssel können nur enthält einen einzelnen skalaren Wert, wenn Wert eine Zeichenkette ist, stecken Sie mit einem Punkt pro Schlüssel. Jedoch, es gibt nichts stoppen Sie das speichern von array-Referenzen (die auch Skalare) als Wert. Dinge einfacher zu machen, sollten Sie wahrscheinlich store nur array-Referenzen oder strings, und nicht mischen die beiden:
$_ = [$_] for values %hash1
keys
gibt Kopien,values
gibt eine Liste von lvalues.Als JohnSmith sagte, verwenden Sie ein hash von Arrays:
und verwenden Sie es als:
müssen Sie zum speichern eines hash-Listen
Beispiel:
http://www.perlmonks.org/?node_id=1977
Diese Frage ist genau äquivalent zu Fragen, ob, wenn wir zuerst einer Variablen zuweisen, dass kann halt nur einen Wert bestimmten Wert, dann aber später zuweisen, dass gleiche variable einen anderen Wert, ob wir jemals Zugriff auf den früheren Wert, dass wir gerade jetzt überschrieben.
Die gleiche Antwort gilt für beide: Nein, natürlich nicht, nicht ohne zu verändern, um Ihre storage class, access-Mechanismus, oder beides. Eine bedeutet. Wenn Sie sich mit einem Mechanismus, der funktioniert für eine einfache unsubscripted Skalare variable, die Sie getan haben, also für eine ganze Klasse von problem.