jcasper: Datei zeilenweise einlesen.

Beitrag lesen

Hallo Forum,

sehr oft habe ich hier schon den einen oder anderen wertvollen Tipp erhalten. Diesmal weiß ich mir aber keine Rat mehr und bin am Ende mit meinem Latein.

Ich habe ein HTML Formular, welches mir ein File über die Funktion <input type=FILE> übergibt. Die darin enthalten Daten möchte ich nur auslesen aber nicht schreiben oder speichern.

Folgenden Code habe ich bereits:

  
my $SPM_handle = $cgi -> upload('SPM');  
my @extensions = qw(txt xls xlsx csv);  
my $i = 0;  
my $file_enabled = "yes";  
  if (($SPM_handle ne "") && ($file_enabled eq "yes")) {  
    if (!grep($fileext,@extensions)) {  
      print "The file has an invalid format! (wrong extension)!<br />\n";  
    } else {  
      while (read($SPM_handle, $buffer, 1024 )) {  
        # only for testing  
        # print "<p>" . $buffer . "</p><hr /><br />";  
        if($i == 0) {  
          # save to $fields (header fields)  
          $fields = $buffer;  
        } else {  
          # start with line 2, save to $data_compl  
          $data_compl[$i] = $buffer;  
        }  
        $i++;  
      }  
    }  
    $counts = $i - 1;  
  }  

Was mir jetzt die Kopfzerbrechen bereitet, ist die Tatsache, dass keine Zeilenenden erkannt werden. Alle Spalten sind ";" getrennt und am Ende steht ein CR LF. Aber wenn ich ein CSV File lade, wird die Zeilenlänge nur in Abhängigkeit des LENGHT Attributs bei read() definiert. Wie bringe ich read() dazu immer genau bis zum Zeilenende (CR LF) zu lesen?

Für Eure Hilfe vorab schon einmal Danke!
ciao Jörg