CommandAttr( undef, $name . ' ASC_twilightDevice ' . sub { my @test = devspec2array('TYPE=(Astro|Twilight)'); return $test[0]; } );
Das gibt mir natürlich eine Referenz als Attributwert.
Eigentlich möchte ich nur erreichen das wenn devspec2array mir wie ein Eintrag hat er mir doch bitte nur den ersten als Attributwert schreibt. Da bin ich dann auf die Idee mit der sub gekommen.
Jemand eine bessere Idee oder wenn mit sub wie ich das korrekt machen muss damit auch der return Wert raus kommt.
Ich weiß das wenn
my $subwert = sub { my @test = devspec2array('TYPE=(Astro|Twilight)'); return $test[0]; };
$subwert = \$subwert;
geht. Aber ich wollte es eigentlich so schön innerhalb der CommandAttr Funktion als Parameterübergabe einbeten.
Grüße
Hi,
versuch mal, "sub" und "return" wegzulassen, also so:
CommandAttr( undef, $name . ' ASC_twilightDevice ' . { my @test = devspec2array('TYPE=(Astro|Twilight)'); $test[0]; } );
Ich hab das jetzt nicht komplett ausprobiert, aber ich sehe da eine Chance...
Gruß,
Thorsten
Leider nicht. Fetter Syntaxerror. Aber Danke fürs Nachdenken.
Hi,
ich denke, dass Du die sub auch aufrufen musst, wenn Du es mit sub machst:
{ "hello". sub { my @test = ("1"," world","3");; $test[1] }->() }
Das ergibt im FHEM-Kommandofeld "hello world".
...also das könnte bei Dir gehen:
CommandAttr( undef, $name . ' ASC_twilightDevice ' . sub { my @test = devspec2array('TYPE=(Astro|Twilight)'); return $test[0]; }->() );
Gruß,
Thorsten
Hallo Thorsten,
Du bist Gold wert. Das könnte es sein. Bin leider gerade unterwegs. Aber genau das mit dem Referenzaufruf habe ich gesucht. Ähnliche Aufrufe habe ich bei den perlmonks gefunden aber halt nicht genau so. Ich berichte heute Abend.
Was soll ich sagen. Konnte es nicht abwarten und habe es eben mal getestet. Geht astrein. Vielen lieben Dank Thorsten.
Grüße
Hi,
Deine netten Worte haben mich angespornt, das noch etwas eleganter hinzuschreiben:
CommandAttr( undef, $name . ' ASC_twilightDevice ' . (devspec2array('TYPE=(Astro|Twilight)'))[0] );
...es geht ja nur darum, den Interpreter in den Array-Kontext zu zwingen.
Gruß,
Thorsten
Oh man jetzt mal ehrlich, darauf hätte ich echt auch kommen können, zumal ich das so schon an anderen Stellen in meinen Modulen mache.
War zu einfach, aber mir geht es auch um den Lerneffekt. Und das mit den anonymen Subs wollte ich schon immer mal testen.
Für die jetzige Aufgabe nehme ich natürlich das einfache.
Vielen lieben Dank noch mal.
Grüße
Zitat von: CoolTux am 08 November 2018, 16:43:55aber mir geht es auch um den Lerneffekt.
So ging's mir auch. Deshalb habe ich mir auch zuerst das mit der sub überlegt. War eine nette kleine Knobelei...
Gruß,
Thorsten