FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: hanske am 10 März 2019, 15:50:55

Titel: min und max funktionen in perl
Beitrag von: hanske am 10 März 2019, 15:50:55
Hallo,
wie kann ich auf einfache Art das Minimum zweier Werte berechnen?

Ich wollte das Ergebnis einer Addition in einem DOIF begrenzen.
([dm_hz_circulation_actor]) (set sw_hm_wall $EVENT) (setreading $SELF currentLoad {(min(([$SELF:currentLoad:d] + [dm_hz_circulation_actor:state:d]), 80))} )

Leider funktioniert das nicht wie erwartet.
Ich habe dann in der FHEM Befehlszeile mal rumprobiert.

Wenn ich dort {min(11,100)} eingebe, kommt 100 raus, was ja falsch ist.
Bei {min(11,10)} kommt dann richtigerweise 10 raus.

Ich hatte dann vermutet , das er die Zahlen als String interpretiert und den ACII Code vergleicht.
Wenn ich aber Buchstaben statt Zahlen eingebe kommt ein Syntaxfehler.
Dann kann es das ja auch nicht sein

Wo liegt mein Fehler?
Danke
Titel: Antw:min und max funktionen in perl
Beitrag von: jensb am 10 März 2019, 16:24:08
Vermutlich wird irgendeine min-Funktion von irgendeinem Modul aufgerufen, da min nicht zum Perl-Sprachumfang gehört. Es gibt das Perl-Core-Modul List::Utils (https://perldoc.perl.org/List/Util.html), das das machen sollte, was du willst. Wenn du den Namen des Moduls vor die Funktion schreibst, wird der Aufruf eindeutig. Versuche folgendes:

{List::Util::min(11,100)}
-> 11

Grüße,
Jens
Titel: Antw:min und max funktionen in perl
Beitrag von: CoolTux am 10 März 2019, 16:25:17
Es gibt in der 99_Utils.pm eine Funktion welche dir die kleinste Zahl einer Zahlenreihe aus gibt. Meinst Du sowas?
Titel: Antw:min und max funktionen in perl
Beitrag von: CoolTux am 10 März 2019, 16:27:05
minNum(num1, num2, ...) returns the lowest value from a given list (sorted numeric)
Titel: Antw:min und max funktionen in perl
Beitrag von: hanske am 10 März 2019, 18:58:25
Ok,
beide Lösungen funktionieren einwandfrei.

Danke! :)