Hallo Bernhard!
Es geht um meinen Onlineshop. Die Bestell- und die persönlichen Daten werden in einer Datei gespeichert. Ich schreibe nun gerade ein Programm, mit dem man sämtliche Bestellungen abrufen kann. Da ergibt sich nun folgendes Problem:
wenn ein Kunde mehrere Produkte bestellt hat werden diese in Arrays (@produkte, @nr, @menge, ...) abgelegt. Die Arrays werden ordnungsgemäss gefüllt, aber ich würde jetzt gerne folgendes machen:
// $produkte{$name} = @produkte;
// $nr{$name} = @nr;
// $menge{$name} = @menge;
// u.s.w.wieso geht das nicht, wie funktionierts wirklich?? Ich stell mir vor, dass es wiedermal so ein banaler Fehler ist, den ich einfach immer übersehe.
Du solltest wohl Deinen Ansatz etwas ummodeln. Z.B. so:
Ein Hash %bestellungen mit den namen als Key. Heraus kommt ein Array sämtlicher Bestellungen. Jede einzelne Bestellung ist ein Hash mit je einem Eintrage pro Produkt, Nr und Menge.
Zugriff dann wie folgt:
foreach my $bestellung (@{$bestellungen{$name}}) {
print "Produkt: $bestellung->{'produkt'}\n";
print "Nr: $bestellung->{'nr'}\n";
print "Menge: $bestellung->{'menge'}\n";
}
Das ganze aus Deinen "Spaltenarrays" zu erzeugen ist etwas aufwendiger. Sinnvoller ist ist wohl beim einlesen der Datensätze die Daten gleich richtig zu verpacken:
push(@{$bestellungen{$name}}, {'produkt' => $produkt, 'nr' => $nr, 'menge' => $menge});
Viel Spass,
Jörk