gelöst: Aufruf einer Sub aus myUtils funktioniert nicht

Begonnen von Dodger, 18 Dezember 2021, 17:50:19

Vorheriges Thema - Nächstes Thema

Dodger

Hi Leute,

ich schon wieder...

ich wollte folgendes notify erstellen:
define Status_PC_n notify FritzBox:.* {if(checkFritzMACpresent("E0:D5:5E:81:17:60") = 0) {fhem("set Status_PC off")} else {fhem("set Status_PC on")}}

Die Funktion "checkFritzMACpresent" steht in den myUtils und funktionier an sich auch. Zumindest die presence Devices werden damit aktiviert.
Jetzt wollte ich die Funktion in das Notify übernehmen und bekomme folgende Fehlermeldung:
ZitatCan't modify non-lvalue subroutine call of &main::checkFritzMACpresent in scalar assignment at (eval 563441) line 1, near "0) "

Das Ergebnis der Funktion sollte "0" oder "1" sein.

Wo liegt mein Fehler?

Gruß
Dodger

Pfriemler

Versuch mal == statt = als Vergleichsoperator ...
= ist eine Zuweisung in perl.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Dodger


Pfriemler

Wenn Du wüsstest, wie oft ich diesen Fehler selber schon gemacht habe als alter BASICianer...
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

betateilchen

Zitat von: Pfriemler am 18 Dezember 2021, 18:02:04
Wenn Du wüsstest, wie oft ich diesen Fehler selber schon gemacht habe als alter BASICianer...

Einfache Eselsbrücke:

Die Wertzuweisung "$a ist 5" wird geschrieben als $a = 5 mit EINEM Gleichheitszeichen, weil nur ein Wort dazwischen steht.

Die Abfrage "$a ist gleich 5?" wird geschrieben als $a == 5 mit ZWEI Gleichheitszeichen, weil zwei Worte dazwischen stehen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!