Nabend,
wieso erzeugt folgender Code(Perl) den Fehler(bei Verwendung des Modules strict):
Software error:
Global symbol "$fldtime" requires explicit package name at D:\Server\Apache2\cgi-bin\gaestebuch.pl line 234.
Global symbol "$fldip" requires explicit package name at D:\Server\Apache2\cgi-bin\gaestebuch.pl line 241.
Execution of D:\Server\Apache2\cgi-bin\gaestebuch.pl aborted due to compilation errors.
Ohne strict werden die Anweisungen zwar ausgeführt, aber eben my $fldtime ist != dem $fldtime aus dem ich die neue Zeit ausrechne.
Achja: Bei einem anderen Script klappte es nicht eine Datei zum Lesen und Schreiben zu öffnen, also open(DATA, "+< datei"). Muss man dabei irgendwas beachten?
my $ip = $ENV{'REMOTE_ADDR'};
my $time = time();
open(DATA,">>$floodprot");
print DATA "$time|$ip\n";
close(DATA);
open(DATA,"$floodprot");
my @ips = <DATA>;
close(DATA);
open(DATA,">$floodprot");
foreach (@ips) {
my $i = 0;
if ($i == 0) {
(my $fldtime, my $fldip) = split(/|/, $_);
chomp($fldip);
$i = 1;
}
my $timeover = $fldtime + $count; # Zeile 234
if ($time > $timeover) {
$i = 0;
next;
}
if ($fldip eq $ip) { # Zeile 241
print $query->start_html(-title=>'Error', -style=>{'src'=>'../stylesheets/style.css'});
print $query->p("Fehler: Floodprotection (".$count."sec) [<a href="javascript:history.back();">zurück</a>]<noscript>[<a href="$ENV{'HTTP_REFERER'}">zurück</a>]</noscript>\n");
print $query->end_html;
exit;
}
}
close(DATA);
gruss, Andreas