volle: Datum überprüfen

Hallo!

Ich möchte überprüfen, ob ein bestimmter Wert in einem Zahlenbereich liegt um Falscheingaben im Datumsformat zu verhindern.
Nicht numerische Eingaben machen jetzt Probleme. Hierbei werden die Eingabe 'xx' als falsch, '0.' als falsch, aber '1.' als wahr ausgegeben.

print "$monat ist ", monat_valid($monat)?"gueltig":"ungueltig","\n";
sub monat_valid
{
return 0 if $monat <1 or $monat>12;
return 1;
};

Prüfe ich zunächst, ob es sich um eine Zahl handelt, werden 01 bis 09 als falsch ausgegeben:

print "$monat ist ", monat_valid($monat)?"gueltig":"ungueltig","\n";
sub monat_valid
{
return 0 if $monat ne int($monat);
return 0 if $monat <1 or $monat>12;
return 1;
};

  1. Moin,

    Ich möchte überprüfen, ob ein bestimmter Wert in einem Zahlenbereich liegt um Falscheingaben im Datumsformat zu verhindern.
    Nicht numerische Eingaben machen jetzt Probleme. Hierbei werden die Eingabe 'xx' als falsch, '0.' als falsch, aber '1.' als wahr ausgegeben.

    Mal angenommen, Du erlaubst vorangestellte Nullen und der Monat soll zwischen 0 und 13 liegen:

    if( $mon =~ /^\d{1,2}$/ && $mon <= 12 && 1 <= $mon ){ print "Monat OK\n" }

    OK bei 01, 1 usw.

    roro

    1. Danke. So klappts.

      Volle