hotti: Lösung wurde gefunden.

Beitrag lesen

hi,

falls Du viel mit CSV-Dateien machst, zum Einen gibts es das Modul Text::CSV und zum Anderen ists oft besser, mit namentlichen Feldern zu arbeiten.

Name;Vorname;Str;PLZ;Ort

wird gesplittet, Du bekommst eine Liste qw(Name Vorname Str PLZ Ort), das wären die Feldnamen (z.B. aus der ersten Zeile der CSV-Datei).

Mit einem Hash-Slice über einen Helper-Hash bekommst Du die Werte, je Zeile ein Hash:

  
# Schleifenkörper über die Zeilen einer CSV-Datei  
my %hh = (); # Helper Hash  
@hh{qw(Name Vorname Str PLZ Ort)} = split ";",  
  Haselhuhn;Horst;Clausstraße;54321;Karl-Marx-Stadt; # Zeile  

und dieser Hash je Zeile wird auf ein Array gepusht als Referenz:

  
push @kladde, \%hh;  

Beim Ausgeben ist der Zugriff ganz einfach per Name möglich aus der Referenz heraus, jedes Array-Element ist eine $ref:

my $name = $ref->{'Name'};

Des Weiteren kann damit auch über ein beliebiges Feld sortiert werden, z.B. über den 'Ort':

  
foreach my $ref( sort {$a->{'Ort'} cmp $b->{'Ort'} } @kladde) {}  

Machs Beste draus ;)

Hotti