Servus,
ich weiss zwar nicht, woher am 3. Wett der Zeilenumbruch kommt, aber ok.
Inzwischen habe ich das ganze etwas umgemodelt.
sub count {
my ($page,$ipnum)=@_ ;
my $checknone = 0;
my $date= &datum_zeit;
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 $line (@lines)
{
$i = $i +1;
my ($num, $pgname, $ipadress, $datum) = split(/&&/, $line) ;
$datum=chomp($datum);
if ($pgname eq $page)
{
$num++;
$checknone = 1;
$output[i]="$num&&$pgname&&$ipadress&&$datum&&" ;
}
else
{
$output[i]="$num&&$pgname&&$ipadress&&$datum&&" ;
}
}
if ($checknone == 0)
{
$i = $i +1;
$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) ;
}
Klappen tut es immer noch nicht. Jetzt wird exakt immer nur ein Wert raus geschrieben, obwohl obige 1. $pgname eq $page Bedingung gar nicht sein kann.
Gruss Matze