MatzeA: Zeilenumbruch \n wird nicht ausgegeben.

Beitrag lesen

Servus,

also nochmals.
Das erste Script, welches lediglich ein get bekommt auswertet.

#!c:\perl58\bin\perl.exe

use strict;
use Config::IniFiles;
use CGI::Carp qw(fatalsToBrowser);
use CGI;

#Ermittlung des Scriptnamens und des Verzeichnisses
#und Wechsel in das aktuelle Verzeichnis (CGI)
$0 =~ /^(.*)[/\].*/ && chdir ($1) ;

require "./libs/statistic.cgi" ;

Notwendige Informationen werden gelesen.

Diese müssen immer als POST Parameter übergeben werden.

my $template = "";
my $query     = new CGI;
my $page;
my $cfg = new Config::IniFiles -file => "./conf/conf.ini";
$page = $query->param('seite');

Laden der Configuration aus der ini Datei.

#Host
my $cgi_host= $cfg->val( 'Server', 'DocumentRoot' ) ;

#WWW-Pfad dieses Files (ohne Host)
my $cgi_dir="$cgi_host/cgi-bin" ;

#Backlink (zurück auf der Übersichtsseite)
my $back_link="$cgi_host/index.html" ;

Verzeichnis zu den Bildern.

my $pic_dir="$cgi_host/images/";

Verzeichnis zum template

my $tmpl_dir="$cgi_host/tmpl/";

open (DAT, "< ../$page.html") || die "Kann das Template -tmpl/vote.tmpl- nicht laden." ;
undef $/ ;
my $seite_txt=<DAT> ;
close (DAT) ;

count($page,127001);

&print_mess($seite_txt);

sub print_mess {

my $mess_txt = shift;

open (DAT, "< tmpl/sturm.tmpl") || die "Kann das Template -tmpl/vote.tmpl- nicht laden." ;
undef $/ ;
my $back=<DAT> ;
close (DAT) ;

$back =~ s/[MESSAGE]/$mess_txt/g ;
$back =~ s/[PICDIR]/$pic_dir/g ;
$back =~ s/[HOME]/$back_link/g ;
$back =~ s/[GETPAGECGI]/$cgi_dir/getpage.cgi/g ;

print "Content-type: text/html\n\n" ;
print $back;

}

####################

Hier nun das 2 Script die lib -> Mein Problemfall

####################

#!/usr/bin/perl
use Time::Local 'timelocal_nocheck' ;
use CGI::Carp qw(fatalsToBrowser) ;
use strict;

############################################################################

Counter

############################################################################

sub count {
   my ($page,$ipnum)=@_ ;
   my $checknone = 0;
   my $date= "12345";
   my $lock = 1;
   my @output ;

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

#Count schreiben
   foreach my $line (@lines)
      {
         chomp $line ;
         my ($num, $pgname, $ipadress, $datum) = split(/&&/, $line) ;
         chomp $datum ;

if ($pgname eq $page)
            {
                $num++;
                $checknone = 1;
                $output[$i]="$num&&$pgname&&$ipadress&&$datum&&" ;
            }
            else
            {
                $output[$i]="$line" ;
            }
            $i++;

}
      if ($checknone == 0)
      {
      $i++;
      $output[$i]="1&&$page&&$ipnum&&$date&&" ;
      }
   open (DAT , "> ./data/stat.log") || die "Kann Datenfile (/data/stat.log) nicht zum Schreiben öffnen" ;
   print DAT "@output";
   close(DAT) ;

}

#sub datum_zeit {
#our $CONFIG;

#my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time+(3600*$CONFIG{'ZEITVERH'}));
#my $datum = sprintf "%02d.%02d.%04d : %02d:%02d" , $mday , $mon+=1 ,$year+=1900 , $hour , $min ;

#return($datum) ;

#}

#############################################################################

ENDE

#############################################################################

1 ;

Egal was ich versuche.... die stat.log ist innerhalb weniger aufrufe zerbröselt.
Das erst Script funktioniert hingegen tadellos und liefert mir immer die gewünschte seite -> $page.

Gruss Matze