Stefan: Letzte Zeile einlesen

Hallo,

in folgendem Code wird die letzte Zeile der Eingabedatei nicht bearbeitet.

@target=();
while(chomp($line=<IN>)){
$line=lc($line);
$line=~s/[^a-z0-9 äöüß\n]/ /g;
$_=~s/  / /g;
$line=~s/ ([0-9]+) ([a-z]{0,2})/$1$2/g;
$line=~s/ ([0-9]+)/$1/g;
@target = split(/ /,$line);
push(@dict,@target);}

Alle Wörter der letzen Zeile der Eingabedatei tauchen im Zielarray @dict nicht auf. Warum und wie kann ich das ändern?

Grüße

  1. in folgendem Code wird die letzte Zeile der Eingabedatei nicht bearbeitet.

    @target=();

    du benutzt kein use strict?
    Mit findet man einfacher Fehler.

    while(chomp($line=<IN>)){

    Hier wird die Schleife solange druchlaufen, bis chomp keinen Wert mehr liefert, d.h. wenn in der letzten Zeile kein Newline ist, wird diese auch nicht mehr eingelesen.

    Besser:

    while(<IN>)  
    {  
        chomp;  
        $_ = lc;  
        s/[^a-z0-9 äöüß]/ /g;  
        s/  / /g;  
        s/ ([0-9]+) ([a-z]{0,2})/$1$2/g;  
        s/ ([0-9]+)/$1/g;  
        push @dict, split / /, $_;  
    }  
    
    

    Struppi.

    --
    Javascript ist toll (Perl auch!)
    1. »»»» while(chomp($line=<IN>)){

      Hier wird die Schleife solange druchlaufen, bis chomp keinen Wert mehr liefert, d.h. wenn in der letzten Zeile kein Newline ist, wird diese auch nicht mehr eingelesen.

      Ah, vielen Dank für den Hinweis!