kann ich in einem externen script darauf zugreifen ... bzw wie den er schriebt mir das das symbol nicht definiert ist ... was wäre da der richtige weg das da auch zu bekommen?
ah grad gefunden muss ich selber machen ...
Muss man nicht zwingend selber machen!
Kannst Du auch in den Funktionsaufruf mit einbauen.
Aufruf in notify/DOIF/.....
meineTolleFunktion($wday);
sub meineTolleFunktion($)
{
my ($wday) = @_;
}
Gruß
Dan
bin mir jetzt nicht sicher, wie man die Frage verstehen soll bzw. wie die bisherige Antwort passt. Ich versteh die Frage mal so, dass man in der 99_Utils eine Variable hat, auf die man dann an anderer Stelle zugreifen möchte.
Wenn es nur innerhalb der 99_Utils sein soll, dann die Variable nicht in der Funktion (Sub) deklarieren sondern ganz oben. Somit ist sie global in der Datei
Wenn sie auch in einer anderer 99_meineUtils.pm verfügbar sein soll, dann darf sie nicht mittels my deklariert werden sondern muß mit
use vars qw( $wday ); ganz oben deklariert sein.
In beiden Fällen empfiehlt sich aber eine Notation für den Variablennamen, den $wday ist so generisch, dass die Chance hoch ist, dass das auch bereits woanders genutzt wird.
Ich mache das wie folgt:
Scope_FileAbbr_Name
Also den scope der Variable (g = global, l=lokal)
Datei Kurzzeichen in welcher Datei ist das definiert). Z.B. UTL für Utils
Beispiel $g_UTL_wday
Danke für die zwei weiteren Lösungsansätze
Die Frage war ursprünglich gedacht, da es innerhalb FHEM ja die globlae variable $wday gibt die man verwenden kann, und ich eben nun teile in die Util ausgelagert habe, damit ich es einfach besser bearbeiten kann und es übersichtlicher ist, und nun kannte er das $wday nicht mehr.
habe es mit
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time());
gelöst
Sorry, aber ich habe trotz der beschriebenen Lösungen weiterhin Probleme $wday in einer Perl-SubRoutine zu benutzen?
Könnt hier nochmals erklären, wie das geht bzw. an welche Stelle Änderungen im fhem.cfg bzw. 99_myUtils.pm getan werden müssen - Status Juli2020?
Vielen Dank.
Was hast Du denn bis jetzt?
Macht Euch doch das Leben nicht so schwer. $wday ist eine Variable, die FHEM-intern nur an wenigen bestimmten Stellen zur Verfügung steht.
Wenn man den Wert für den Wochentag in einer eigenen Funktion braucht, kann man den doch einfach innerhalb der Funktion ermitteln.
sub meineTolleFunktion {
my $wday = (localtime())[6];
...
...
...
}