Hallo Richard,
Es funktioniert nun alles, nur die Prüfung mit "defined" nicht und beim Einsatz von "strict" die Meldung, dass die Variable $username nicht deklariert wurde (was ich aber doch tue?).
Mit defined prüfst du ob zu einem Schlüssel ein Wert im Hash gepeichert ist, mit exists hingegen prüfst du auf die Existens des Schlüssels selber.
Wenn bei dir also kein "username" übergeben wird, liefert
my $username = $q->param("username");
(eigentlich) einen nicht determinierten Wert, die Fehlermeldung bei
if (defined $username)
ist also logisch.
Zu deinem Still: Das erinnert mich sehr an die Geschichte von den Kanonen und Spatzen ...
Ich würde vorschlagen:
my $username = $q->param("username") || &no_username();
my $city = $q->param("city") || &no_city();
my $comments = $q->param("comments") || &no_comments();
my $homepage = $q->param("homepage") || &no_homepage();
und am Ende der &no_.+() dann jeweils nach vollbrachter Arbeit ein exit;
Grüße, pK