Hallo allerseits,
Ich habe gleich noch eine Frage:
Aus meinem alten fhem-System (schon sehr lange nichts mehr dran gemacht) habe ich mir eine Routine in ein frisch aufgesetztes System kopiert:
(Auf den relevanten Code gekürzt)
sub my_test1()
{
my ($jetzt_year,$jetzt_month,$jetzt_day)=Today();
}
Wenn ich die Funktion aufrufe, bekomme ich die Fehlermeldung "Undefined subroutine &main::Today..."
In meinem alten System funktioniert die Routine...
Muß ich noch etwas nachinstallieren und wenn ja was?
Viele Grüße
Frank
Du solltest mal schauen, in deinen alten myUtils gibt es vermutlich eine entsprechende Routine "Today()".
Oder die war in einem Modul verfügbar, das du genutzt hast, das du aber jetzt entweder nicht mehr im Einsatz hast oder das geändert wurde (diese Funktionsbenennungen im main-Namespace sind - nennen wir es - unglücklich...).
Das habe ich schon befürchtet... in meinen alten myUtils gibt es diese Funktion nicht. Das setze ich mich mal dran und hole die Routinen aus der Steinzeit in die Neuzeit... ;-)
Danke!
Vielleicht hilft der Schnippsel weiter (zweistellige Rückgabe):
my $jetzt_year = (localtime)[5]-100;
sub Today
{
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
return ($year + 1900),($mon + 1),$mday);
}
Falls man nicht direkt alles einpackt, sollte man m.E. wenigstens klarstellen, wo sowas herkommt - insbesondere dann, wenn man den Verdacht hat, dass ggf. auch irgend ein Modul so einen (unglücklichen) Funktiosaufrufnamen verwendet!
Minimum wäre myToday() oder so...
Hallo allerseits,
Danke für die Tipps. Ich bin dabei, meine uralten Routinen komplett neu zu überarbeiten. Im Moment habe ich noch leichte Probleme mit dem Datetime-Modul von Perl, aber da zickt das Linux rum und nicht fhem. Mal sehen, wie weit ich ohne das komme...
Viele Grüße
Frank
Falls du Interesse hast: Es gibt einen Forenbereich "Perl für FHEM-User".
Da du mit dem Problem "uralte Routinen" auf den aktuellen Stand bringen nicht ganz alleine bist, können wir gerne versuchen, deine "exemplarisch" mal durchzuackern. Da gibt es bestimmt neben interessierten Mitlesern auch (andere) Leute, die dich gerne unterstützen...
Würde empfehlen, das gleich in der "package"-Variante anzugehen. Vorteil: Wenn es mal läuft und dir "stiehlt" danach einer eine vorausgesetzte externe Routine, lädt die myUtils nicht mehr beim FHEM-Start, und du bekommst eine qualifizierte Rückmeldung, was fehlt.
In der Regel sollte es auch nicht notwendig sein, allzuviel Zeug von extern zu holen (Module aus cpan usw.).
Moin,
Auf das Angebot werde ich garantiert zurückkommen. Ich hatte gestern noch ziemliche Probleme mit dem Datetime Modul, heute habe ich einen anderen Ansatz versucht: Rechnen mit den bereits vorhandenen Routinen (localtime etc). Das hat funktioniert und ist (bisher) nichtmal komplizierter.
Viele Grüße
Frank