Autor Thema: Funktionsaufruf kosmetisches Problem  (Gelesen 382 mal)

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 21712
Funktionsaufruf kosmetisches Problem
« am: 30 August 2018, 09:20:04 »
Hallo,

Ich möchte gerne einen Funktionsaufruf flexibler gestalten.

sunrise_abs()
sunset_abs()

sunrise und sunset sollen aus einer Variablen ausgelesen werden. Leider klappt das bei mir nicht wie gewünscht.
my $test = 'sunrise';
${test}_abs()

gibt mir Fehler aus. Auch das verbinden mit . zwischen der Variablen und dem Rest klappt nicht. Kann mir da einer kurz einen Tip bitte geben.



Grüße
Leon
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Offline gandy

  • Developer
  • Full Member
  • ****
  • Beiträge: 242
Antw:Funktionsaufruf kosmetisches Problem
« Antwort #1 am: 30 August 2018, 09:27:35 »
Meinst Du sowas?
my $test = 'sunrise';
eval ${test}."_abs();";

Grüße,
Andy.
fhem (svn) auf i5-4210U NUC
2x HMLAN, 19x HM-SEC-RHS, 15x HM-LC-Bl1PBU-FM, etc.
ODYS Neron Tablet / Android 4.2
Samsung Galaxy Tab 2 10.1N / Android 4.1.2
Samsung Galaxy Note / Android 6.0.1

Offline Thorsten Pferdekaemper

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5553
  • Finger weg von der fhem.cfg
Antw:Funktionsaufruf kosmetisches Problem
« Antwort #2 am: 30 August 2018, 09:29:02 »
Guten Morgen!
my $test = "sunrise";
no strict;
($test."_abs")->();
...zumindest bei mir klappt das.
(Ich hatte das schon geschrieben, als die andere Lösung kam...)
Gruß,
   Thorsten
RasPi
Heizkessel-Steuerung per Arduino und HTTPMOD
und einen Haufen Homematic (Wired)

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 21712
Antw:Funktionsaufruf kosmetisches Problem
« Antwort #3 am: 30 August 2018, 09:40:31 »
Oh das ging ja fix. Danke Euch Jungs. An "" hatte ich auch schon gedacht, nur nicht daran wirklich den ganzen Rest mit ein zu binden. Also bis zum Semikolon.

Ich teste und berichte dann.



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 21712
Antw:Funktionsaufruf kosmetisches Problem
« Antwort #4 am: 30 August 2018, 10:07:37 »
Also im Kleinen funktioniert es. Leider nicht im großen Stil.

return (gettimeofday() - str2time(eval ${sunvalue} . "_abs(AttrVal(${defs}->{NAME},'autoAstroModeEvening','REAL'),0,AttrVal($shuttersDev,'AutoShuttersControl_Time_Down_Early','15:30:00'),AttrVal($shuttersDev,'AutoShuttersControl_Time_Down_Late','22:30:00')")) >= 0 ? 1 : 0);
syntax error
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 21712
Antw:Funktionsaufruf kosmetisches Problem
« Antwort #5 am: 30 August 2018, 10:19:58 »
Vielen Dank an TomLee er hat im Gegensatz zu mir korrekt die Klammern gezählt  ;D

Ich bekommr zu mindest keine Fehler mehr. Nun muß ich testen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 21712
Antw:Funktionsaufruf kosmetisches Problem
« Antwort #6 am: 30 August 2018, 10:23:32 »
Test erfolgreich abgeschlossen. Danke an alle Helfenden Köpfe.

Auf zum nächsten Bug
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20790
Antw:Funktionsaufruf kosmetisches Problem
« Antwort #7 am: 30 August 2018, 11:13:13 »
Alternativ (siehe auch fhem.pl/CallFn, $fn ist ein String):    no strict "refs";
    my @ret = &{$fn}(...);
    use strict "refs";

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 21712
Antw:Funktionsaufruf kosmetisches Problem
« Antwort #8 am: 30 August 2018, 11:36:07 »
Danke Rudi. Habe ich mir notiert. Immer gut mehrere Wege zu kennen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer