Damit der Code so nicht unkommentiert in's Archiv kommt.
$counter = 0;
Du nutzt aber schon use strict?
my $Layout1;
my $Thema;
my $Bild;
my @LinkCollect;
Nur eine Stilfrage, aber mittlerweile ist es üblich mit Grossbuchstaben Klassen, Objekte bzw in Perl packages zu Kennzeichnen, jeder Programmierer der deinen Code sieht weiß dann, diesen Wert kann er nur in Verbindung mit new oder package verwenden.
Selbst dazu gibt es in der Perldoku einen ausführlichen Artikel (Online).
open(LESER, "<public/publisher.csv");
flock(LESER, LOCK_SH);
flock ist ja schön und gut, aber wichtiger in diesem Fal ist es das du abfragst ob open überhaupt funktioniert hat.
open(LESER, "public/publisher.csv") or die "Kann die Datei public/publisher.csv nicht öffnen, weil: $!";
print "Content-type: text/html\n\n";
use CGI qw(header);
print header;
while(! eof(LESER)){ <---Schleifenbeginn
$counter = $counter + 1;
my $zeile = <LESER>; <---Füllvorgang klappt
eof ist BASIC Style. Auch Perl kennt inkrement oder dekrement Operatoren.
my ($Layout1, $Thema, $Bild) = split(/,/,$zeile); <--- Splitten klappt
Durch diese Zeile hast du immer den seltsamen Zeilenumbruch in der HTML Ausgabe, auch dafür gibt es eine Funktion.
Warum musst du hier zum zweiten mal die Variabeln deklarieren? Einmal reicht eigentlich.
Das ganze könnte z.b. so aussehen:
while(<LESER>) { # jede Zeile bis zum Ende der Datei
# durchlaufen in $_ ist die aktuelle
$counter++;
chomp; # Zeilenumbruch entfernen
my ($Layout1, $Thema, $Bild) = split /,/, $_;
push @LinkCollect, $Thema;
}
Struppi.