Warum muss in
$cgi->start_html(-title =>'Testseite mit Link',..
nicht auch die geschweifte Klammer verwendet werden, also
$cgi->start_html({-title =>'Testseite mit Link',...
Wenn du dem HTML Element, das du erzeugen willst Attribute übergeben willst, musst du eine Hashreferenz übergeben, bei Funktionen des CGI Moduls, ist dies nicht nötig. Der Punkt ist, dass normalerweise Elemente einen Inhalt haben können und um dies einfacher zu realisieren ist der Autor diesen weg gegangen, wenn der 1. Parameter ein Hash ist, dann stehen dort die Attribute und der zweite ist der Inhalt.
print CGI::p({-attribut => 'wert'}, 'text');
<p attribut="wert">text</p>
Bei Funktionen des CGI Modules, die kein HTML Element erzeugen, bzw als Synonym für eines stehen, kannst du mit -attribut => 'wert' Parameter übergeben oder die Parameter in einer definierten Reihenfolge übergeben (so wie ie in der Doku stehen ).
Struppi.