Nein! Ich meine diesen Hi-Tech-Code:
So sieht Code aus, der aus der Perl Steinzeit stammt.
#!/usr/bin/perl -w
übrigens auch wenn der Schalter -w gut ist, ist der Gefährlich, wenn man die Warnungen nicht irgendwo abfängt, denn RückZuck haste einen 500'er Fehler und damit kennst dich ja aus.
open(LESER, "<public/publisher.csv");
Dass du so sicher bist, dass die Datei immer an dieser Stelle ist, von einem anderen Programm gelöscht wurde ... usw. Es sind nur wenige Zeilen um dein Progamm robuster zu machen.
while(! eof(LESER)){
$counter = $counter + 1;
my $zeile = <LESER>;
my ($Layout1, $Thema, $Bild) = split(/,/,$zeile);
push (@LinkCollect, $Thema);
Da hab ich schon meinen Kommentar zu abgelassen. while !eof ist herrlich nostalgisch, ich kenn das wirklich nur noch aus BASIC Zeiten.
if($Layout1 eq "L") {
print "<!-- ############################### -->\n";
print "<!-- #Das ist die Klasse Text Links# -->\n";
print "<!-- ############################### -->\n";
print "\n";
print '<a name="A'. "$counter", '"></a>', "\n";
print '<div class="inner_left_links">',"\n";
print '<p class="report">';
und du findest solchen Quellcode leserlich?
Wie schon anderweitig erwähnt, viele Programmierer sind in jahrlanger Erfahrung dahinter gekommen, dass es besser/schöner/praktischer ist, HTML und Code zu trennen.
open(INHALT, "<../httpdocs/sammler/artikel_text/$Thema");
Hier wird sicher nie was gelöscht und in $Thema steht für immer und ewig der richtige Wert. Ich kann die jetzt schon prophezeien du wirst noch viel zu tun haben mit deinem Skript.
flock(INHALT, LOCK_SH);
$insert = <INHALT>;
Es darf nur ein Zeile n der Datei stehen? Ich dachte du hast File::Slurp schon gefunden (oder die von Sichfred verlinkte FAQ gelesen?)
print $insert;
print "</p>\n";
print "</div>\n";
print '<div class="inner_right_links">',"\n";
print '<img src="sammler/artikel_pics/';
print $Bild;
print '" alt="">',"\n";
print "</div>\n";
print '<div class="big_line">',"\n";
print "</div>\n";
}
Wirklich, das tut weh.
Wenn du weiterhin sicher bist, das Programm auf dem Level zu halten, dann mach nutz doch wenigstens die Möglichkeiten die Perl dir anbietet um sowas leserlich zu gestalten:
z.b. so:
print qq[ <p>$insert</p>
<img src="sammler/artikel_pics/$Bild" alt="">
];
Dein HTML Code mutiert übrigens immer mehr zu einer DIV suppe, wozu ist DIV mit der Klassen 'big_line' gut? Die ganze Struktur ist seltsam, aber das sagte ich ja schon mehrmals.
Du siehst aber schon in den Ansätzen das Problem, dass du früher oder später lösen werden musst. Du hast Blöcke, die sich im Prinzip immer wieder wiederholen, jeder macht das Gleiche, Parameter vergleichen, Datei öffnen, lesen, HTML Code ausgeben. Der nächste Schritt wären Funktion die das automatisieren, der übernächste sind dann Module. Zuerst Eigene und dann wirst du irgendwann merken, es gibt da draussen tausende Leute die das gleiche schon mal gemacht haben und oft besser sind als du oder ich und von denen du die Lösung für all die Probleme, die du dir jetzt auftürmst, bekommst.
Struppi.