Was ist der beste Weg, um beide Hashes zu% hash1 zu kombinieren? Ich weiß immer, dass% hash2 und% hash1 immer eindeutige Schlüssel haben. Ich würde auch eine einzelne Codezeile bevorzugen, wenn möglich.
$hash1{'1'} = 'red';
$hash1{'2'} = 'blue';
$hash2{'3'} = 'green';
$hash2{'4'} = 'yellow';
perl
dictionary
hash
merge
mleykamp
quelle
quelle
%hash1 = (%hash1, %hash2)
$hash_ref1
auf$hash_ref2
, keine Verschmelzung. Sie wollen$hash_ref1 = { %$hash_ref1, %$hash_ref2 };
, ich werde die Antwort bearbeiten.Check out perlfaq4: Wie kann ich zwei Hashes verschmelzen . Die Perl-Dokumentation enthält bereits viele gute Informationen, die Sie sofort erhalten können, anstatt darauf zu warten, dass jemand anderes sie beantwortet. :) :)
Bevor Sie zwei Hashes zusammenführen, müssen Sie entscheiden, was zu tun ist, wenn beide Hashes dieselben Schlüssel enthalten und Sie die ursprünglichen Hashes unverändert lassen möchten.
Wenn Sie die ursprünglichen Hashes beibehalten möchten, kopieren Sie einen Hash (% hash1) in einen neuen Hash (% new_hash) und fügen Sie dann die Schlüssel aus dem anderen Hash (% hash2) in den neuen Hash ein. Überprüfen Sie, ob der Schlüssel bereits in% new_hash vorhanden ist gibt Ihnen die Möglichkeit zu entscheiden, was mit den Duplikaten geschehen soll:
Wenn Sie keinen neuen Hash erstellen möchten, können Sie diese Schleifentechnik weiterhin verwenden. Ändern Sie einfach% new_hash in% hash1.
Wenn es Ihnen egal ist, dass ein Hash Schlüssel und Werte des anderen überschreibt, können Sie einfach ein Hash-Slice verwenden, um einen Hash zu einem anderen hinzuzufügen. In diesem Fall ersetzen Werte aus% hash2 Werte aus% hash1, wenn sie Schlüssel gemeinsam haben:
quelle
Dies ist eine alte Frage, die jedoch in meiner Google-Suche nach "Perl-Merge-Hashes" ganz oben steht - und dennoch wird das sehr hilfreiche CPAN-Modul Hash :: Merge nicht erwähnt
quelle
Für Hash-Referenzen. Sie sollten geschweifte Klammern wie die folgenden verwenden:
und nicht die oben vorgeschlagene Antwort in Klammern:
quelle