Hallo zusammen,
ich spiele ein wenig mit Userreadings und Pearl. Hintergrund ist ich möchte verstehen wie es funktionert. Hierzu möchte ich zwei Temperaturwerte meiner Heizthermostate auswerten. Da ich ja numerische Werte auswerten möchte muss ich ja die Funktion "ReadingsNum" verwenden. Also habe ich mir einfach mal was sinnfreies gebastelt:
uebereinstimmungtemp:.* { if (ReadingsNum("heizregler_bad","desired-temp",0) eq ReadingsNum("heizregler_schlafzimmer","desired-temp",0)){return "Termperaturistgleich"} else {return "Temperaturistnichtgleich"}}
Das führt zu dem gewünschten Ergebnis.
Was ich nicht verstehe warum es hier ein eq anstatt einem = sein muss.
also das hier funktioniert nicht:
uebereinstimmungtemp:.* { if (ReadingsNum("heizregler_bad","desired-temp",0) = ReadingsNum("heizregler_schlafzimmer","desired-temp",0)){return "Termperaturistgleich"} else {return "Temperaturistnichtgleich"}}
Bei der Ausführung kommt es zu einem Syntaxfehler.
Can't modify non-lvalue subroutine call of &main::ReadingsNum in scalar assignment at (eval 598886) line 1, near "))"
Wenn ich aber ein
>
<
verwende klappt es ohne Probleme.
Könnt ihr mir bitte helfen. Das wäre sehr nett.
Grüße
Steven
.
a) Wer oder was ist "Pearl"?!? Erinnert mich an ein Album einer längst verstorbenen Künstlerin... Oder ist das Versandunternehmen mit diversen "lustigen" Artikeln gemeint, die keiner braucht?!?
b) "=" ist eine Zuweisung, genau wie das auch in der Fehlermeldung steht. Numerische Vergleiche macht man (nicht nur) in Perl mit "==".
:D :D :D :D
oh je da hab ich mich vertippt .sorry ...
Danke für den Hinweis ...
Grüße
Steven
Falls noch mehr Operatoren von Nöten sind, hier ganz gut beschrieben: https://perldoc.perl.org/perlop ;)
Oh, ein Popcorn-Thread... 8)