Join-Schlüssel und Werte in perl
Habe ich einen hash mit den folgenden Schlüssel/Wert-paar
4 => model1
2 => model2
Ich möchte den folgenden string erzeugt aus den oben genannten hash -
4 X model1 , 2 X model2
Ich habe versucht, die folgenden
my %hash,
foreach my $keys (keys %hash) {
my $string = $string . join(' X ',$keys,$hash{$keys});
}
print $string;
Was ich bekomme ist
4 X model12Xmodel2
Wie kann ich erreichen das gewünschte Ergebnis 4 X model1 , 2 X model2
?
InformationsquelleAutor user238021 | 2011-12-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie tun:
Ausgabe:
Wie es funktioniert:
map { expr } list
wertetexpr
für jedes Element inlist
, und gibt die Liste enthält alle Ergebnisse dieser Auswertungen. Hier"$_ X $hash{$_}"
wird ausgewertet, für jeden Schlüssel den Hashwert, das Ergebnis ist eine Liste vonkey X value
strings. Diejoin
kümmert setzen Sie die Kommas zwischen den einzelnen dieser Zeichenfolgen.Beachten Sie, dass Sie Ihre hash ist ein bisschen ungewöhnlich, wenn man die Speicherung (Artikel,Anzahl) - Paaren. Normalerweise würde es anders herum sein:
denn mit Ihrer Regelung, die Sie nicht speichern kann die gleiche Menge für zwei verschiedene Elemente in Ihren hash.
Wenn Sie möchten, eine (Menge -> Element) - Karte, Sie können es tun, aber Sie müssen einen hash von arrays. Syntax wird ein bisschen tricky aber. perldoc.perl.org/perldsc.html#Generation-of-a-HASH-OF-ARRAYS
InformationsquelleAutor Mat
Können Sie auch ändern Sie Ihre Schleife wie folgt:
InformationsquelleAutor Ashwinee K Jha