</ul> <-- Hier hackt's
Was heißt denn hakt?
Da du den Code von Hand produzierst (ich würd für sowas das CGI Modul nutzen), ist natürlich das erste was du geprüft hast ob der Code valide ist?
Ansonsten läßt sich schwer nachvollziehen wo das Problem ist, aber es liegt wohl in der Funktion getSectionsForMaps().
Von wegen Gruselfaktor, warum baust du so eine Schleife?
for (my $i = 0; $i < @sections; $i++) {
In Perl geht das soviel einfacher über foreach() und vor allem der nachfolgende Code würde viel lesbarer.
foreach my $section(@sections) {
my $liEndTag = defined($section{SECTIONS}) ? "\n" : "</li>\n";
print " $spacer<li>", $section{FILE_URL}, $liEndTag; # entpr. URL (wenn definiert)
$spacer = " ".$spacer if defined($section{SECTIONS});
$obj->getSectionsForMaps($section{SECTIONS}, $spacer) if defined($section{SECTIONS});
}
Wobei ich es für Unsinn halte HTML Code unbedingt formatiert auszugeben zu wollen (also z.b. die Leerzeichen vor dem <li>), dem Browser ist es egal wie formatiert dein HTML Code deiner dynamischen Seite ist. ausserdem würde ich die Ausgabe immer erst sammeln, bevor ich sie mit print ausgebe.
Struppi.