der text von meinem cgi sieht so aus:
hast du dieses Skript mal auf der Konsole ausgeführt?
Dort würdest du weahrscheinlich sehen, das die ausgabe nicht die ist die du erwartest (und der Browser).
#!/usr/bin/perl
#!/usr/bin/perl -w
use strict;
Damit vermeidest du (Tipp)Fehler in der Entwicklungsphase.
http://perldoc.com/perl5.8.0/pod/perldebtut.html
use CGI;
$cgi = new CGI;
use CGI::Carp qw(fatalsToBrowser);$multi_zaehler = "no"; #doppelt zählen ausschalten
if($multi_zaehler eq "no") {
if($ENV{'HTTP_COOKIE'}) {}
else {
$neuCookie = $cgi->cookie(-name=>'zaehler',
-value=>'zaehlen',
-expires=>'+10s',
-path=>'/');
print $cgi->header(-cookie=>$neuCookie);HOLEN();
ERNEUERN();
}
}
else {
HOLEN();
ERNEUERN();
}
Wenn $ENV{'HTTP_COOKIE'} keinen Wert enthält, dann gibst du keinen Header aus.
Grossbuchstaben sollten für Konstanten reserviert werden.
http://perldoc.com/perl5.8.0/pod/perlstyle.html
######Subroutine######
sub HOLEN {
open(Datenspeich, "<DS.txt") or die;
was 'die'? warum läßt du dir nicht ausgeben was passiert ist? Filehandles sollten auch mit Grossbuchstaben geschrieben werden.
open(FH , "<DS.txt") or die "kann DS.txt nicht öffnen, weil: $!";
$Beanzahl = <Datenspeich>;
close(Datenspeich);
}sub ERNEUERN {
open (Datenspeich, ">DS.txt") or die;
print Datenspeich ++$Beanzahl;
close (Datenspeich);
}
Und ob du wirklich einen Zähler programmieren willst (der so nicht funktionieren wird) halte ich für fraglich, aber gut:
les wenigstens dass vorher: http://perldoc.com/perl5.8.0/pod/perlfaq5.html#I-still-don't-get-locking.--I-just-want-to-increment-the-number-in-the-file.--How-can-I-do-this-
Struppi.