Perl: Hashes (assoziative Arrays)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Perl: Hashes (assoziative Arrays)

Beitrag von lemak » 18.01.2009 19:40:52

Hallo,

vllt könnt ihr mir nochmal in Sachen Perl helfen.
Ich habe hier ein assoziative Array - Liste:

Code: Alles auswählen

my %Liste;
$Liste {$a} {$b} {"Name"} = $c if(defined ($var));
Ich kann mir leider nicht recht vorstellen was hier passiert.
Kann jemand versuchen mir dass zu erklären?
Ich verstehe ja wie man Liste normal initialisieren würde und dann auf die Elemente zugreift -Das finde ich zu Hauff im web- Aber dass hier bekomme ich nicht auf die Reihe.

Danke.

PS: Hoffe der Code-Ausschnitt ist korrekt so.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Perl: Hashes (assoziative Arrays)

Beitrag von gms » 18.01.2009 20:12:08

der Wert von $Liste{$a} ist eine Referenz auf ein weitere Hash-Liste. In dieser wird unter dem Schlüssel $b eine weitere Referenz auf eine Hash-Liste gespeichert und in dieser wird unter dem Schlüssel "Name" der Wert von $c gespeichert:

Code: Alles auswählen

gms@gms1 ~ $ cat x.pl

my $a="1";
my $b="2";
my $c="3";

my %Liste;
$Liste {$a} {$b} {"Name"} = $c;

foreach my $k1 (keys %Liste) {
  foreach my $k2 (keys %{$Liste{$k1}}) {
    foreach my $k3 (keys %{$Liste{$k1}{$k2}}) {
      print "Liste{$k1}{$k2}{$k3}=",$Liste{$k1}->{$k2}->{$k3},"\n";
    }
  }
}


gms@gms1 ~ $ perl x.pl
Liste{1}{2}{Name}=3
Gruß
gms

Antworten