Thread Perl +OOP
(26 answers)
Opened by [HR]Doomrunner at 2003-10-01 14:23
Ich hab' das Ding spaßhalber mal ein bisserl umgeschreiben:
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 package crs; my @wochentage = qw/Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag/; *new = *neu; # *unauffälligpfeif* sub neu { my $klasse = shift; return bless(&jetzt,ref($klasse) || $klasse || _ _PACKAGE_ _); } sub AUTOLOAD { my $ich = ref($_[0]) ? shift : &jetzt; $AUTOLOAD =~ s/^.+\:\://; defined($ich->{$AUTOLOAD}) || die "Eigenschaft '$AUTOLOAD' nicht definiert!"; return $ich->{$AUTOLOAD}; } sub jetzt { my @z = localtime(time); my $ich = { sekunden => $z[0], minuten => $z[1], stunden => $z[2], tag => $z[3], monat => $z[4]+1, jahr => $z[5]+1900, wochentag => $wochentage[$z[6]] }; $ich->{uhrzeit} = $ich->{stunden}.':'.$ich->{minuten}.':'.$ich->{sekunden}; $ich->{datum} = $ich->{tag}.'.'.$ich->{monat}.'.'.$ich->{jahr}; return $ich; } 1; So wird's aufgerufen: Code (perl): (dl
)
1 2 3 4 5 6 7 #!perl use crs; my $blablabla = new crs; print $blablabla->datum." ".crs->uhrzeit; Naja, ich finde die OOP (u.a.) praktisch, weil (u.a.) die Funktionen (dann Methoden), die zu einem bestimmten meist komplexeren Datengebilde gehören, direkt bei diesem dabei sind, was das Ganze einfacher zu schreiben und zu lesen macht (oder zumindest machen sollte ;)). Daß es (wie bei einigen anderen Programmiersprachen ja auch) auf Kosten der Geschwindigkeit geht, ist natürlich ned so schön; da muß man halt abwägen, wo man optimieren muß/sollte/kann, bzw. sogar auf OOP verzichten sollte. Edit: Das Forum mag mich Mit-Einem-Leerzeichen-Einrücker ned... Edit die 4.: *irgendwanngehtes...ganzsicher...ichmußnurganzfestdaranglauben* Edit die 6.: Warum mag er _ _PACKAGE_ _ ned? Edit die 7.: Warum mag er es auch im normalen Text nicht? Hinweis der 1.: Überall wo _ _PACKAGE_ _ steht bitte die beiden Leezeichen zwischen den Unterstrichen rausdenken...\n\n <!--EDIT|DS|1065037326--> View full thread Perl +OOP |