Hallo,
Wenn ichs vom Server laufen lasse -> Internal Server Error
Was steht im Error-Log des Webservers?
#!/usr/bin/perl -w
use CGI;
use CGI::Carp qw(fatalsToBrowser);
Hier würde ich auch unbedingt ein
use strict;
einfügen. Allerdings solltest Du Dir dann auch die Geschichte mit 'my' ansehen;-)
$query = new CGI;
$counter = 0;
@hilfsliste = "";
$dateiname = "";
print $query->header;
open(ZAEHLER,">>data.txt") or die "Zaehler kann nicht geoeffnet werden : $!\n";
flock ZAEHLER, 2;
print ZAEHLER "a";
close ZAEHLER;
open(ZAEHLER,"<data.txt") or die "Zaehler kann nicht geoeffnet werden : $!\n";
while (<ZAEHLER>)
{
while (/a/)
{
$counter++;
}
}
close ZAEHLER;
Diese Art, einen Zähler zu implementieren wird auf Dauer recht unperformat, da die Datei ziemlich groß werden kann. Warum schreibst Du den Zähler nicht einfach in die entsprechende Datei:
(Hier jetzt mal eine absolut quick & dirty version)
my $counter;
if(open(IN,'data.txt'))
{
$counter= <IN>;
close IN;
}
else
{
$counter = 0;
}
$counter++;
if(open(OUT,'>data.txt'))
{
print OUT $counter;
close OUT;
}
Wie gesagt, hier fehlen noch einige dinger wie flocks und so.
push @hilfsliste, 'text';
push @hilfsliste, $counter;
push @hilfsliste, '.txt';
$dateiname = join('',@hilfsliste);
open (FILE,">$dateiname") or die "Neue Datei kann nicht geoeffnet werden : $!\n";
close FILE;
Das ist zwar recht unüblich sollte aber trotzdem funktionieren, vielleicht klemmts ja schon weiter oben.
Aber warum versuchst Du es nicht mal etwas mehr perlish:
$dateiname = "text$counter.txt";
bzw. (deutlich krisensicherer)
$dateiname = "text${counter}.txt";
anstelle des Arrays und einem join.
Grüße
Klaus