Roland: 2 Dimensionales HashArray

Beitrag lesen

Hallo Forumsgemeinde,

ich hab derzeit ein Problem mit einem 2Dimensionalen HashArray.
und zwar will ich einen Beispieldatensatz wie den folgenden einlesen

ID|NAME|WERT
1|Egon|34
4|Franz|23
8|Jürgen|9
13|Kurt|1

ich würde das eigentlich Zeilenweise mit Push machen
push(@DATEN, { 'id' => $1, 'name' => $2, 'value' => $3 });

jedoch besteht dann das Problem das ich natürlich meinen Wert im späteren Skript direkt mit der ID aufrufen will nicht ausgeliefert bekomme sondern nen andern:
$DATEN[$i]->{'name'}  wenn ich für $i die ID 1 annehme bekomm ich ja den Wert der ID 4...

Ich hab mich dann mit Zeigern probiert jedoch bekomm ich das immer nur richtig hin wenn ich eindimensional Arbeite ( halt nur zum Test)

nun hab ich mich mit der Methode probiert ohne Push
und einfach zugeordnet für jede Zeile :  $DATEN[$i]->{'name'} = $2;
jedoch bleiben dann natürlich im Hasharray die Felder 0,2,3,5, etc. undefiniert und ich bekomme Probleme beim Sortieren...

Kann mir jemand helfen...
Hab ich nen komplett Falschen Ansatz ?

Gruß
Steffen

Hallo Steffen,

versuch es mal so:

#!perl

my $datei = {};
while (<DATA>){
 chomp;
 my ($id,$name,$wert) = split /|/;
 $datei->{$id}->{'name'} = $name;
 $datei->{$id}->{'wert'} = $wert;
}
print $datei->{'4'}->{'name'};
__DATA__
1|Egon|34
4|Franz|23
8|Jürgen|9
13|Kurt|1

Gruß
Roland