Struppi: grep liefert nicht gewünschtes Ergebnis?

Beitrag lesen

Hallo,
Ich will eine Funktion haben, die mir WAHR zurückgibt, wenn die Eingabe nicht leer ist und nicht von 1 und 31 ist. Bis jetzt habe ich es so gelöst:

if (($$gebtag ne '') && (!grep /$$gebtag/, (1..31)))   {
$$error = 1;
$$gebdatenerror = 'Der Geburtstag ist nicht gültig !';
}

Warum prüfst du den mit einer Schleife?
if ( $$gebtag && ($$gebtag < 0 || $$gebtag > 31))  {
 $$error = 1;
$$gebdatenerror = 'Der Geburtstag ist nicht gültig !';
}

Darüberhinaus, würde ich die Gültigkeit eines Datums nicht so prüfen. Du solltest mit localtime und Time::localtime die Zahlen miteinander vergleichen. Dann kannst du wirklich feststellen ob das Datum ein gültiges Datum ist.

Struppi.