Hi,
Wenn ichs vom Server laufen lasse -> Internal Server Error
diese Meldung hat Deine Instinkte vollständig zu überladen. Du setzt die Atmung aus, lässt Dein Herz ruhen, denkst nicht mal an Sex. Dein Universum reduziert sich auf das Error-Log Deines Servers. Erst wenn Du dieses konsultiert hast, darfst Du Dein Herz wieder schlagen lassen.
#!/usr/bin/perl -w
use strict; # s. auch Klaus' Posting
use CGI::Carp qw(fatalsToBrowser);
Wenn der Server nicht mal bis hierher kommt, ist er fehlkonfiguriert, hat nicht genügend Rechte zur Scriptausführung, oder der Perl-Interpreter findet nur Unsinn (ASCII-Modus bei FTP nicht vergessen).
@hilfsliste = "";
Dir ist klar, dass Du hier ein Array deklarierst, welches bereits ein (leeres) Element enthält?
$dateiname = "";
Nebenbei möchtest Du Doublequotes vermeiden, wenn Du sie nicht unbedingt brauchst. Hier reichen Singlequotes vollkommen aus.
open(ZAEHLER,"<data.txt")
Auch hier. Übrigens kann diese Datei sonstwo im Filesystem gesucht werden - bei CGI ist der Begriff "aktuelles Verzeichnis" undefiniert und entspricht höchstens zufällig dem, was Du erwartest!
while (<ZAEHLER>)
{
while (/a/)
{
$counter++;
}
}
Von Klaus' völlig richtiger Anmerkung abgesehen: Wenn Du mal in die Verlegenheit kommst, _wirklich_ die Zeilenanzahl einer Datei auslesen zu müssen, solltest Du je nach Dateigröße auf performantere Wege umsteigen. Unter Unix wäre z.B.
my $counter = wc -l data.txt
;
ein brauchbarer Anfang; wobei Du niemals vergessen solltest, dass dieses Script dann nur noch unter bestimmten Bedingungen lauffähig ist.
close FILE;
Wie erwähnt: Auch hier solltest Du den Fehlerfall abfangen.
Cheatah