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
Meinst Du sowas?
my $test = 'sunrise';
eval ${test}."_abs();";
Grüße,
Andy.
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
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
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
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.
Test erfolgreich abgeschlossen. Danke an alle Helfenden Köpfe.
Auf zum nächsten Bug
Alternativ (siehe auch fhem.pl/CallFn, $fn ist ein String): no strict "refs";
my @ret = &{$fn}(...);
use strict "refs";
Danke Rudi. Habe ich mir notiert. Immer gut mehrere Wege zu kennen.