FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: sn0000py am 28 Februar 2017, 11:44:19

Titel: 99_MyUtils.pm $wday
Beitrag von: sn0000py am 28 Februar 2017, 11:44:19
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?
Titel: Antw:99_MyUtils.pm $wday
Beitrag von: sn0000py am 28 Februar 2017, 11:48:59
ah grad gefunden muss ich selber machen ...
Titel: Antw:99_MyUtils.pm $wday
Beitrag von: DeeSPe am 28 Februar 2017, 12:10:43
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
Titel: Antw:99_MyUtils.pm $wday
Beitrag von: bugster_de am 28 Februar 2017, 13:32:51
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
Titel: Antw:99_MyUtils.pm $wday
Beitrag von: sn0000py am 28 Februar 2017, 14:07:20
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
Titel: Antw:99_MyUtils.pm $wday
Beitrag von: Joachim2112 am 08 Juli 2020, 13:37:10
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.
Titel: Antw:99_MyUtils.pm $wday
Beitrag von: CoolTux am 08 Juli 2020, 15:59:37
Was hast Du denn bis jetzt?
Titel: Antw:99_MyUtils.pm $wday
Beitrag von: betateilchen am 08 Juli 2020, 17:24:07
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];
...
...
...
}