Thread CSV Vergleich (21 answers)
Opened by gnude at 2011-10-25 13:18

rosti
 2011-10-25 21:23
#153557 #153557
User since
2011-03-19
3463 Artikel
BenutzerIn
[Homepage]
user image
Kleiner Tipp: Wenn Du nur mit einem Array(Zeile)-Index arbeitest, geht die Übersicht schnell flöten. Verwende Spaltennamen. Rufe dazu an jeder Zeile eine Callbackfunktion mit der Array-Referenz $row

while-Schleife wie gehabt, in jeder Zeile
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
while( my $row = $csv->getline ){ &cb($row) }

# Die Callbackfunktion macht die Zuordnung index => name
sub cb{
  my $r = shift;

  my $id = $r->[0]; # Beispiel ID auf index [0]
  $DATA->{$id}{name}  = $r->[1];
  $DATA->{$id}{vname} = $r->[2];
  $DATA->{$id}{plz}   = $r->[3];
 
  # usw.
}


$DATA kann ein globaler Hash sein, oder auch eine Objekteigenschaft (Objekt wird übergeben).

Die Fehlerbehandlung in Text::CSV ist etwas kniffelig, siehe Dokumentation. Verwende in der Schleife NIE den eigenen Dateihandler, sondern stets die Methoden des Moduls, zb. $csv->eof um das Ende der Datei abzufragen.

View full thread CSV Vergleich