Forum
Tipps
News
Menu-Icon

csv-Datei mit Perl auslesen und in eine txt-Datei schreiben

Hallo zusammen,

ich habe eine EXCEL-Tabelle unter der Endung CSV gespeichert. Nun möchte ich mit einem Perl-Script diese Datei zeilenweise auslesen und dann in eine txt-Datei schreiben.


Hier ein paar Codeschnipsel:

use strict;
use Cwd;           # Ermittelt das aktuelle Arbeitsverzeichnis
use File::Copy;       # Ermöglicht das Kopieren von Dateien und gilt als wichtides
                # Tool, um Dateien mit Perl betriebssystemunabhängig kopieren zu können
use File::Find;       # Durchsucht Verzeichnisbäume nach Dateien.
################################################################################

# Variablen, die Werte aus der "CSV-Datei" übernehmen.
undef $esn;
undef $fsn;
undef $pl;
undef $sn;
undef $pf;
undef $porte;
undef $portf;

################################################################################
open(CSVDatei, ">>BR_neu.csv");             # CSV-Datei zum anhängenden Schreiben öffnen
close(CSVDatei);

# CSV-Datei Zeichenweise auslesen
@CSVDatei = ("");    # Speicher für alle Datensaetze
@Datensatz = ("");   # Speicher für alle Felder des aktuellen Datensatzes
$Felder = "";        # Speicher für die Namen der Felder (stehen in der ersten Dateizeile)
$i = 0;

################################################################################
open(CSVDatei, "<BR_neu.csv") || die "CSV-Datei nicht gefunden\n";
while(<CSVDatei>)              # Semikolonbegrenzte Datei einlesen
 {
  if($i == 0)                  # erste Zeile der Datei einlesen
   {
    $Felder = $_;              # Feldnamen ermitteln
   }
  else
   {
    $CSVDatei[$i] = $_;        # ab zweiter Zeile in @CSVDatei einlesen
   }
  $i++;                        # Datensatzzähler erhöhen
 }
close(CSVDatei);
$Anzahl = $i - 1;              # Anzahl Datensätze merken
chop($Felder);
@Datenfelder = split(/;/,$Felder);    # Erste Zeile mit Feldnamen aufdröseln
for(@CSVDatei)                        # solange Daten in der CSv-Datei sind
 {
  @Datensatz = split(/;/,$_);         # Aktuellen Datensatz aufdröseln
  $i = 0;
  for(@Datensatz)
   {
    print SQLVorlage "<b>$Datenfelder[$i]:</b> $Datensatz[$i]<br>\n";   # Aktuellen Datensatz schreiben
    $i++;
   }
 }
print SQLVorlage "</body>\n</html>\n";
close(SQLVorlage);
print $Anzahl," Datensaetze geschrieben\n";   # Nur zur Kontrolle: auf Standardausgabe


Kann mir einer helfen?

Gruß Rainer


« Flash-Animation -> CountdownPHP - Unterschiede von Fonts mit GD-Library auf verschiedenen BSs? »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Dateiendung
Die Dateiendung ist ein Teil des Dateinamen und zeigt das Dateiformat an. Klassisch war die "8.3" Regelung, nach der der Dateiname under MS DOS 8 Zeichen lang sein durfte...

Auslagerungsdatei
Die Auslagerungsdatei, auch bekannt als virtueller Speicher, ist ein wichtiges Element im Windows-Betriebssystem. Sie dient als Erweiterung des physischen Arbeitsspeicher...

Dateiendungen
Die Dateiendung, auch Dateinamenerweiterung, Dateierweiterung oder einfach "Endung" genannt, besteht aus meistens drei oder vier Buchstaben und wird mit einem Punkt an de...