*XY*Datendaten
*END* #Der Datensatz ist zuende
Wenn Deine Daten (ist das nur ein Feld, oder mehrere?) keinen "*" enthalten, dann scheint das zu funktionieren. Aber die Trennung zwischen den Datensätzen brauchst Du nicht - Du hast ja die Trennung der Zeilen (1 Datensatz pro Zeile, wenn Deine Daten kein "\n" enthalten - und deshalb würde ich dann ggf. auch gleich "\n" als Separator zwischen den Spalten nehmen).
Wie muss ich ungefähr vorgehen, wenn ich aus so einer Struktur die bereits erwähnte Abfrage "Welche verschiedenen Werte gibt es im Feld XY" basteln möchte?
Einen Hash anlegen, über alle Werte des Feldes laufen, jeweils den Feldwert als Hash-Schlüssel verwenden und einen beliebigen Wert in den Hash hineinschreiben (Duplikate sind egal, einfach drüberschreiben).
Am Ende beschreiben die keys(%hash) genau die Menge aller vorliegenden Werte.
Wenn der Wert, den Du hineinschreibst, ein Inkrement (++) des vorherigen Wertes ist, dann zählst Du sogar nebenbei mit, wie oft jeder Wert vorkommt.
Erfreulicherweise setzt ein "++" auf einen vorher undefinierten Wert eine "1" hinein - Du brauchst also keine Fallunterscheidung zwischen neuen und bereits gefundenen Werten.