Funktionsaufruf kosmetisches Problem

Begonnen von CoolTux, 30 August 2018, 09:20:04

Vorheriges Thema - Nächstes Thema

CoolTux

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://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

gandy

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

Thorsten Pferdekaemper

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
FUIP

CoolTux

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://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

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://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

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://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

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://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rudolfkoenig

Alternativ (siehe auch fhem.pl/CallFn, $fn ist ein String):    no strict "refs";
    my @ret = &{$fn}(...);
    use strict "refs";

CoolTux

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://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net