Richard: Formularfelder prüfen mit "defined"

Beitrag lesen

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:

ok - vielen Dank, ich hab das jetzt so geschrieben. Hab nun aber
ein anderes Problem, doch das werd ich separat posten.

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