Struppi: Cookie

Beitrag lesen

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.