FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: CoolTux am 30 August 2018, 09:20:04

Titel: Funktionsaufruf kosmetisches Problem
Beitrag von: CoolTux 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
Titel: Antw:Funktionsaufruf kosmetisches Problem
Beitrag von: gandy am 30 August 2018, 09:27:35
Meinst Du sowas?

my $test = 'sunrise';
eval ${test}."_abs();";


Grüße,
Andy.
Titel: Antw:Funktionsaufruf kosmetisches Problem
Beitrag von: Thorsten Pferdekaemper 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
Titel: Antw:Funktionsaufruf kosmetisches Problem
Beitrag von: CoolTux 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
Titel: Antw:Funktionsaufruf kosmetisches Problem
Beitrag von: CoolTux 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
Titel: Antw:Funktionsaufruf kosmetisches Problem
Beitrag von: CoolTux 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.
Titel: Antw:Funktionsaufruf kosmetisches Problem
Beitrag von: CoolTux am 30 August 2018, 10:23:32
Test erfolgreich abgeschlossen. Danke an alle Helfenden Köpfe.

Auf zum nächsten Bug
Titel: Antw:Funktionsaufruf kosmetisches Problem
Beitrag von: rudolfkoenig 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";
Titel: Antw:Funktionsaufruf kosmetisches Problem
Beitrag von: CoolTux am 30 August 2018, 11:36:07
Danke Rudi. Habe ich mir notiert. Immer gut mehrere Wege zu kennen.