Siechfred: Wird Zeilenabschlusszeichen \n mit eingelesen?

Beitrag lesen

Nachdem dein eigentliches Problem geklärt ist, erlaube ich mir mal, deinen Code ein wenig zu kommentieren:

Einen Datensatz speichere ich wie folgt in eine Textdatei:

open(FileNr, ">$DateiName") || die "Fehler: $!";
  $Datensatz = $Feld1.chr(9). $Feld2."\n";
  print FileNr $Datensatz;
  close FileNr;

Warum legst du die Variable $Datensatz an? Du kannst gleich in die Datei schreiben:

print FileNr "$Feld1\t$Feld2\n";

my @Datenfelder = ();
  open(FileNr, "<$DateiName") || die "Fehler: $!";
  my @Datensaetze = (<FileNr>);
  close(FileNr);

foreach my $Datensatz (@Datensaetze) {
    @Datenfelder=split(chr(9),$Datensatz);
    &Verarbeiten
  }

Das kannst du wunderbar bereits beim Einlesen der Daten in einem Rutsch erledigen:

my @Daten;  
open FH, "$DateiName" or die $!;  
while(<FH>) {  
  chomp;  
  push @Daten, [ split /\t/ ];  
}

Schau dir hierzu den Abschnitt Arrays of Arrays in perldsc an. Daneben solltest du dir wirklich sicher sein, was du tust, wenn du eine Subroutine so aufrufst, wie in deinem Codebeispiel. Schau dir hierzu perlsub an.

Aber das alles nur zur Ergänzung.

Siechfred