sub UpdateStats {
my $referer = $CNT::ref || '';
$iplog{$ENV{'REMOTE_ADDR'}} = $time;
my $file = Untaint("$DEF::datadir/$CNT::id.stat");
Der Punkt muss nicht markiert werden. Das '&' Zeichen ist überflüssig. (Du kannst das benutzen um Parameter durchzureichen)
open(ST,">>$file");
Funktioniert das? Immer prüfen!
open ST,">>$file" || die "Kann $file nicht öffne. Weil: $!";
flock(ST,2);
Funktioniert das? (Auf manchen Windowssystem nämlich nicht)
Ausserdem ist 2 nicht immer das was du willst (ich gehe mal von LOCK_EX aus).
Also:
use Fcntl qw(:flock);
flock ST, LOCK_EX || die "Lock schlug fehl. ($!)";
print ST $time, '|', e"thostname($ENV{'REMOTE_ADDR'}), '|', $referer, '|', $ENV{'HTTP_USER_AGENT'}, "\n";
Was ist das?
Eventuell willst du:
print ST "$time|". hostname($ENV{'REMOTE_ADDR'}).
"|$referer|$ENV{'HTTP_USER_AGENT'}\n";
Struppi.