MatzeA: Zeilenumbruch \n wird nicht ausgegeben.

Beitrag lesen

Servus,

folgende Methode soll mir alle aufrufe in einer Datei eintragen.

sub count {
   my ($page,$ipnum)=@_ ;
   my $checknone = 0;
   my $date= &datum_zeit;
   my $lock = 1;

#Daten laden
   open (DAT , "< ./data/stat.log") || die "Kann Datenfile (/data/stat.log) nicht zum Lesen öffnen" ;
   my @lines = <DAT> ;
   close(DAT) ;

#Count schreiben
   open (DAT , "> ./data/stat.log") || die "Kann Datenfile (/data/stat.log) nicht zum Schreiben öffnen" ;
   flock(DAT,2) if ($lock==1) ;
   foreach (@lines)
      {
         my @poll_set = split(/|/) ;
         if ($poll_set[1] eq $page)
            {
                $poll_set[0]++;
                $checknone = 1;
            }
                print DAT "$poll_set[0]|$poll_set[1]|$poll_set[2]|$poll_set[3]|\n " ;
      }
   close(DAT) ;

if ($checknone == 0)
   {
   #
      open (DAT , ">> ./data/stat.log") || die "Kann Datenfile (/data/stat.log) nicht zum Schreiben öffnen" ;
      flock(DAT,2) if ($lock==1) ;
      print DAT "1|$page|$ipnum|$date|" ;
      print DAT "\n" ;
      close(DAT) ;
   }

}

so sähe es dann aus.

1|spass|127.0.0.1|16.02.2004 : 21:32|
1|bilder|127.0.0.1|16.02.2004 : 21:41|

Das Dumme ist nur, dass das Script nie über 2 Einträge hinaus kommt.
Das Problem liegt daran, dass der letzte Eintrag nie und nimmer einen Zeileumbruch bekommt und somit obige forech Schleife keine zweimal sondern nur einmal durchläuft.

Verdammt was mache ich gedanklich nur falsch?

Gruss Matze