Ich schreibe ein Skript, das den Inhalt eines Hashes eines Hashes von Arrays ausdruckt.
(Pseudocode):
my %hash = ();
$hash{key1}{key2} = ['value1', 'value2', 'value3', . . .];
oder
$hash{key1}{key2} = @array_of_values;
Grundsätzlich möchte ich dies für beliebige Kombinationen von Schlüsseln tun können und durch alle möglichen Schlüssel/Wert-Paare (oder wahrscheinlich genauer als Schlüssel, Schlüssel/Array-Paare ausgedrückt, da jeder Wert tatsächlich ein Array von Werten ist und jedes Array damit 2 Schlüssel hat) durchlaufen und die Ausgabe im folgenden Format ausdrucken:
"key1, key2, Wert1, Wert2, Wert3, . . .\n"
(Beispiel):
#!/usr/bin/perl
use strict;
use warnings;
# Hash initialisieren
my %hash = ();
my $string1 = "string1";
my $string2 = "string2";
# Strings in Arrays im Hash speichern
push @{$hash{a}{b}}, $string1;
push @{$hash{a}{b}}, $string2;
push @{$hash{c}{d}}, $string2;
push @{$hash{c}{d}}, $string1;
# Elemente des Hashes ausdrucken
# (möchte dies als Schleife für alle möglichen Schlüssel/Wert-Paare tun)
local $, = ',';
print "a, b, ";
print @{$hash{a}{b}};
print "\n";
print "c, d, ";
print @{$hash{c}{d}};
print "\n";
system ('pause');
Die Ausgabe dieses Codes wird unten angezeigt:
a, b, string1,string2
c, d, string2,string1
Drücken Sie eine beliebige Taste, um fortzufahren . . .
Ich dachte daran, den each
-Operator zu verwenden, aber anscheinend funktioniert er nur für eindimensionale Hashes. (each
gibt nur ein Schlüssel-Wert-Paar zurück, es funktioniert nicht korrekt, wenn 2 Schlüssel involviert sind)
Wie kann ich diesen Code optimieren, um durch den Hash in einer Schleife zu gehen und die gewünschte Ausgabe unabhängig von der Größe meines Hashes zu drucken?