hi!
ZIEL: Namen (Werte) der Spalten in Variablen zu speichern mit Bezug auf Position in der Reihenfolge.
OK, ich hab mich wirklich bemüht. Ich hab zehn Minuten vor dem Stück Quellcode gesessen, aber trotzdem nicht verstanden, was du da genau machst. So ziemlich alles an deinem Quellcode kommt mir irgendwie umständlich oder unverständlich vor... Deshalb versuche ich es mal von Anfang an komplett neu.
Zuallererst: Schau dir vor allem die Perl-Funktion push an, vielleicht bringt dich das allein schon weiter.
OK, los geht's:
=== cut ===
#!/usr/bin/perl
wir lesen zuallererst mal alle Zeilen der Datei in eine Liste ein
open DATEI, "<database.txt";
@lines = <DATEI>;
close DATEI;
dann bearbeiten wir jede Zeile einzeln
for (@lines)
{
# wir splitten jede Zeile in die Hauptgruppe und die Untergruppe auf
($grp, $subgrp) = split /;/;
# wir entfernen das letzte Zeichen = das Newline-Zeichen
chop $subgrp;
# wenn wir jetzt bei einer anderen Hauptgruppe sind als vorher...
if ($lastgrp ne $grp)
{
# ...dann definieren wir eine neue letzte Hauptgruppe
$lastgrp = $grp;
# ...und erweitern das Array der Hauptgruppen um die neue Gruppe
push @groups, $grp;
}
# abschließend hängen wir an das Array, das die Untergruppen der aktuellen Hauptgruppe
# speichert, die neue Untergruppe an
push @{ $subgroups[$#groups] }, $subgrp;
}
zum testen ein bisschen was auf den Bildschirm schreiben
print @groups, "\n";
print @{ $subgroups[0] };
=== cut ===
Das war's auch schon, und ich finde es übersichtlicher als vorher. Ich hoffe, das war, was du wolltest.
$groups[0] ist jetzt der Name der ersten Hauptgruppe, $groups[1] der Name der zweiten Hauptgruppe, etc.
$subgroups[0][0] ist der Name der ersten Untergruppe von der ersten Hauptgruppe, $subgroups[1][2] ist der Name der dritten Untergruppe von der zweiten Hauptgruppe, etc.
bye, Frank!