Thread Code Verkürzen? (12 answers)
Opened by Froschpopo at 2006-03-02 02:32

Dubu
 2006-03-02 13:20
#63376 #63376
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Wenn das Datum schon an anderer Stelle auf Korrektheit geprüft wurde, kann man den Code etwas kürzer, übersichtlicher und schneller schreiben:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
sub sternzeichen {
   my ($day, $month) = @ZZZ;
   my $md = $month*100+$day;   # Ein Wert aus Monat und Tag

   return (
       # Zahlen immer *ohne* führende Null!
       $md <   101 ? undef :           # < 01.01. => Fehler
       $md <=  120 ? 'Steinbock' :     # bis 20.01.
       $md <=  219 ? 'Wassermann' :    # bis 19.02.
       $md <=  320 ? 'Fisch' :         # bis 20.03.
       $md <=  420 ? 'Widder' :        # bis 20.04.
       $md <=  520 ? 'Stier' :         # bis 20.05.
       $md <=  621 ? 'Zwillinge' :     # bis 21.06.
       $md <=  722 ? 'Krebs' :         # bis 22.07.
       $md <=  823 ? 'L&ouml;we' :     # bis 23.08.
       $md <=  923 ? 'Jungfrau' :      # bis 23.09.
       $md <= 1023 ? 'Waage' :         # bis 23.10.
       $md <= 1122 ? 'Skorpion' :      # bis 22.11.
       $md <= 1221 ? 'Sch&uuml;tze' :  # bis 21.12.
       $md <= 1231 ? 'Steinbock' :     # bis 31.12.
       undef                           # > 31.12. => Fehler
   );
}

Dabei ist aber Vorsicht geboten: Man verspürt vielleicht den Drang, der Übersichtlichkeit halber die Daten vor Oktober als "0219", "0320" etc. zu schreiben. Eine führende Null macht aus den Dezimalzahlen aber Oktalzahlen und die ganzen Vergleiche stimmen nicht mehr!


PS: Fsck! Jetzt gehen gar keine Unterstriche mehr im Forum, die werden komplett durch "ZZZ" ersetzt! esskar, was hast du angestellt?

View full thread Code Verkürzen?