Hallo Struppi!
Vielen Dank für Kritik und Ratschläge!
Wie du gemerkt hast gibt es eine reine Perl Version, die sich überall einfach installieren läßt, wenn der Hoster sich weigert dieses zu installieren, wofür es aber keinen Grund gäbe, sondern das wäre eher Grund den Hoster zu wechseln. Wenn dieser Perl anbietet, sollte das installieren von CPAN Modulen zum Angebotsumfang gehören.
Ich denke da (ganz langsam) an einer (eigentlich lange überfälligen) Neufassung des GBs. Von den Usern (viele haben nie etwas mit Perl gemacht) kann ich nicht verlangen, dass sie Module installieren o.Ä. Dieses kleine Modülche soll 'web-lib.pl' ersetzen, und soll einfach mit ins cgi-bin oder ugb-Ordner kopiert werden.
Wie gesagt, bei 1und1 ist Date::Calc [1] installiert, vielleicht ist es bei anderen Hostern nicht der Fall.
Was mir zuerst auffällt, du nennst das Modul Date::Today, das package aber nur Today, es müßte auch Date::Today heißen.
OK, danke. Wird geändert.
Als nächstes, warum definierst du die Variabeln mit our?
Die drei »our«-Variablen sollen von main erreichbar sein:
mit my $VERSION:
C:\Perl\site\lib\Date>perl -w
use strict;
use Today;
print $Today::VERSION;
^Z
Use of uninitialized value in print at - line 3.
mit our $VERSION:
C:\Perl\site\lib\Date>perl -w
use strict;
use Today;
print $Today::VERSION;
^Z
0.1
Wobei... die Elemente von localtime kann ich eigentlich »my-en«.
Dann brauchst du kein HASH für die Wochentag und Monatsnamen, da reichen einfach Arrays.
Sind Hashes denn so viel weniger performant? Ich arbeite gerne mit Hashes... ;) Aber da Cheatah die Internationalisation eingebracht hat, werde ich mir hier etwas Neues überlegen müssen.
Das mit den Großbuchstaben ist zwar in Date::Calc auch so, es ist aber nicht die übliche Praxis.
Bei Date::Calc sind die Methodennamen explizit, von daher stört die Großschreibung hier nicht, finde ich.
Ich verwende für Funktionen immer Kleinbuchstaben, Funktionen mit Großbuchstaben wären Konstruktorfunktionen, die man aber üblicherweise nicht braucht in Perl, sondern dort sind es die package Namen. Aber das sind nur Konventionen, die viele anders handhaben.
Ja. Nur hätte eine »sub time« mit »time()« geclashed. Ansonsten gebe ich Dir Recht, und ich werde »Time« in »now« umbenennen (und »Year« in »year«) - klingt auch besser:
my $time = $Date::Today::now();
my $short_time = $Date::Today::now('short');
my $old_german_with_single_dot_time = $Date::Today::now('old'); # ;)
Und da du nicht mit Objekten arbeitest brauchst du die $today Parameter nie, d.h. du kannst sie wegschmeissen, entweder mit shift oder in dem du den wirklichen Parameter mit $_[1] abfragst.
Die werden an wenigen Stellen gebraucht, wenn eine Funktion den Rückgabewert einer anderen benötigt, z.B. in »sub rfc«:
return $today->Year."-$month-$day";
sub xTime {
shift;
my $how = shift;
my $printf = !$how ? '%02d:%02d:%02d' :
$how eq 'short' ? '%02d:%02d' :
$how eq 'old' ? '%02d.%02d Uhr' : 'Fehler'
;
return sprintf $printf, $lhour, $lmin, $lsec;
}
Schöner Code, aber meine private leading\_zero-Sub finde ich auch ganz nett ;)
[1] Das sind übrigens alle Date::-Module, die installiert sind:
Date::Calc
Date::Calc::Object
Date::Calendar
Date::Calendar::Profiles
Date::Calendar::Year
Date::Format
Date::Language
Date::Language::Afar
Date::Language::Amharic
Date::Language::Austrian
Date::Language::Brazilian
Date::Language::Chinese\_GB
Date::Language::Czech
Date::Language::Danish
Date::Language::Dutch
Date::Language::English
Date::Language::Finnish
Date::Language::French
Date::Language::Gedeo
Date::Language::German
Date::Language::Greek
Date::Language::Italian
Date::Language::Norwegian
Date::Language::Oromo
Date::Language::Sidama
Date::Language::Somali
Date::Language::Swedish
Date::Language::Tigrinya
Date::Language::TigrinyaEritrean
Date::Language::TigrinyaEthiopian
Viele Grüße aus Frankfurt/Main,
Patrick
--
![](http://www.atomic-eggs.com/fuernA.jpg)
\_ - jenseits vom delirium - \_
[[link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash](http://www.atomic-eggs.com/)]
Nichts ist unmöglich? [Doch!](http://www.atomic-eggs.com/cwi/cwi_4.shtml)
Heute schon ge[gök](http://goek.atomic-eggs.com/goek_goek.html)t?