Tach!
des liegt da dran, dass Du net einrückst.
wie ist des gemeint? ^^
Hast du schon mal gesehen, wie Quelltext üblicherweise notiert wird, damit er übersichtlich lesbar ist? Man rückt ihn je nach Tiefe ein. Man notiert zum Beispiel besser nicht
if (bedingung)
aktion1;
else
aktion2;
sondern
if (bedingung)
aktion1;
else
aktion2;
Dadurch kommt die Struktur besser zu Vorschein. Es kann natürlich sein, dass du ihn ordentlich notiert hast, aber beim Kopieren hierher die Formatierung verlorengegangen ist. Das ist dann etwas anderes - aber trotzdem Mist.
Zum eigentlichen Problem: Die Ursachen für Syntaxfehler sind sehr oft, wenn nicht gar immer, in der Vergangenheit zu finden. Du hast irgendwo etwas vergessen und die Syntaxregeln sagen an einer späteren Stelle, dass das so nicht sein kann, weil aufgrund des vorherigen Fehlers eine andere Syntax erwartet wird. Ein unerwartetes $end (steht für Ende des Programms), tritt beispielsweise auf, wenn eine Klammer zu viel oder zu wenig notiert wurde. Wenn du solche Fehler nicht durch aufmerksames Code-Lesen findest, kannst du den Fehler einzukreisen versuchen, indem du Code-Blöcke testweise vorübergehend rausnimmst. Bleibt der Fehler, liegt es kaum an diesem Code-Block. Ist der Fehler weg, dann ist er nicht unbedingt in dem Code-Block zu finden, er steht jedoch zumindest im Zusammenhang mit diesem Code-Block.
dedlfix.