Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2003 Teil von Juni

SELFHTML Forumsarchiv
keys eines mehrdimensionalen Hash's auslesen

Informationsseite
  1. Seite (PERL) keys eines mehrdimensionalen Hash's auslesen von Alex, 30. 06. 2003, 21:09
nach unten

keys eines mehrdimensionalen Hash's auslesen

Die folgende Nachricht zum Thema stammt von: Alex, 30. 06. 2003, 21:09

Guten Tag,

ich habe ein Script, das aus mehreren externen Datenquellen einen mehrdimensionalen Hash erzeugt. Der Hash wird in einer Schleife mit folgenden Werten belegt:

$Daten{$name}{'klamotten'}{$kleidungsstueck} = 'ja';  # Werte: 'ja' oder 'nein'
$Daten{$name}{'geburtsdatum'} = $geburtsdatum;
$Daten{$name}{'lieblingsgetraenk'} = $getraenk;


Soweit zum Einlesen. Jetzt kommt die Auswertung. Die Namen kann ich auslesen mit:

 @allenamen = keys(%Daten);

Jetzt möchte ich gern für jeden Name herausbekommen, was er für Klamotten hat:

foreach $name (@allenamen) {
 @klamotten = keys(%Daten{$name}{'klamotten'});

Das funktioniert leider nicht, obwohl es mir logisch erscheint. Habt ihr eine Idee, wie ich an die keys der 'klamotten' komme?

Grüße Alex

nach obennach unten

keys eines mehrdimensionalen Hash's auslesen

Die folgende Nachricht zum Thema stammt von: Struppi, 30. 06. 2003, 21:24


»» foreach $name (@allenamen) {
»» @klamotten = keys(%Daten{$name}{'klamotten'});
»»
»» Das funktioniert leider nicht, obwohl es mir logisch erscheint. Habt ihr eine Idee, wie ich an die keys der 'klamotten' komme?

Lieder kenn ich perldoc nicht so gut als das ich dir sagen könnte wo du nachguckst. Aber dafür:

@klamotten = keys %{Daten{$name}->{klamotten}};

so sieht's besser aus, das mit den Pfeilen sollltest du dir mal angucken, du kannst so nicht unterscheiden, ob du eine Referenz oder ein HASH hast, was manchmal zu blöden Verwechslungen kommen kann.

Also dein Codeschnipsel von oben sollte etwa so aussehen:

$Daten{$name} = {};

$Daten{$name}->{'klamotten'}->{$kleidungsstueck} = 'ja';  # Werte: 'ja' oder 'nein'
$Daten{$name}->{'geburtsdatum'} = $geburtsdatum;
$Daten{$name}->{'lieblingsgetraenk'} = $getraenk;

Struppi.

nach obennach unten

keys eines mehrdimensionalen Hash's auslesen

Die folgende Nachricht zum Thema stammt von: alex, 30. 06. 2003, 23:28

»» @klamotten = keys %{Daten{$name}->{klamotten}};

Hab vor Daten noch ein $ eingefügt:

@klamotten = keys %{$Daten{$name}->{'klamotten'}};

Jetzt klappts. Dankeschön! Alex

nach obennach unten

keys eines mehrdimensionalen Hash's auslesen

Die folgende Nachricht zum Thema stammt von: Andres Freund, 30. 06. 2003, 21:37

Hi,

»» Das funktioniert leider nicht, obwohl es mir logisch erscheint. Habt ihr eine Idee, wie ich an die keys der 'klamotten' komme?
Wie es geht, hat dir ja schon Struppi gesagt.
Aber ein genereller Tipp bei solchen Problemen ist, über das Modul Data::Dumper die Referenz ausgeben zu lassen. Mit der Hilfe dieser Ausgabe kann man sehr oft erkennen, wie man auf die einzelnen Elemente eines Records zugreifen kann.

Grüße Andres Freund

--
ss:) zu:) ls:} fo:) de:] va:) ch:| n4:& rl:° br:^ js:( ie:% fl:( mo:|

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2003 Teil von Juni

© 1998-2006 Seite Impressum, Software: Classic Forum