FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: skyfly24 am 08 September 2015, 17:02:38

Titel: IF Abfrage mit Kombination "oder" und "und" greift nicht
Beitrag von: skyfly24 am 08 September 2015, 17:02:38
Hallo an alle,
kann mir jemand sagen, warum folgende Abfrage nicht den "und" Wert (Variable $zaehler) berücksichtigt, sondern nur die "oder" Werte? Die Variable $zaehler wir überhaupt nicht berücksichtigt. Die Abfrage soll nur wahr sein, wenn die Variable $zaehler den Wert 1 hat und eine der Zeiten mit der Variable $hm stimmen. Wenn die Zeiten stimmen wird die Abfrage als Wahr durchlaufen. Die Variable $zaehler wird ignoriert, egal was drin steht. :-(

my $zaehler = 2;
if ($zaehler eq 1 && $hm eq "00:58" || $hm eq "01:58" || $hm eq "02:58" || $hm eq "03:58" || $hm eq "04:58" || $hm eq "05:58" || $hm eq "06:58" || $hm eq "07:58" || $hm eq "08:58" || $hm eq "09:58" || $hm eq "10:58" || $hm eq "11:58" || $hm eq "12:58" || $hm eq "13:58" || $hm eq "14:58" || $hm eq "15:58" || $hm eq "16:00" || $hm eq "17:58" || $hm eq "18:58" || $hm eq "19:58" || $hm eq "20:58" || $hm eq "21:58" || $hm eq "22:58" || $hm eq "23:58") { ...


Danke
Titel: Antw:IF Abfrage mit Kombination "oder" und "und" greift nicht
Beitrag von: JoWiemann am 08 September 2015, 17:24:28
Hallo,

eq ist ein Vergleich für Zeichenketten. Also hier schon mal == benutzen. Und dann würde ich die ganzen "oder" klammern. Also ( und ( oder oder)).



Grüße Jörg

Gesendet von iPhone mit Tapatalk
Titel: Antw:IF Abfrage mit Kombination "oder" und "und" greift nicht
Beitrag von: skyfly24 am 08 September 2015, 17:46:29
Super Dankeschön. Dachte == und eq ist gleichwertig. Dann teste ich das mal :)
Titel: Antw:IF Abfrage mit Kombination "oder" und "und" greift nicht
Beitrag von: franky08 am 08 September 2015, 18:02:19
Numerischer und String- Vergleich  ;)

ZitatPerl unterscheidet Vergleichsoperatoren für Zahlen und für Zeichenketten

http://wiki.selfhtml.org/wiki/Perl/Operatoren

VG
Frank
Titel: Antw:IF Abfrage mit Kombination "oder" und "und" greift nicht
Beitrag von: skyfly24 am 09 September 2015, 11:12:48
Vielen Dank franky08
Wer lesen kann ...  ;D
Hatte vorher schon auf SELFHTML nachgesehen. Muss mir angewöhnen nicht nur alles zu überfliegen, sondern genau zu lesen :-)

Der Vollständigkeit halber hier nun die korrekte Variante:
if ($zaehler == 1 && ($hm eq "00:58" || $hm eq "01:58" || $hm eq "02:58" || $hm eq "03:58" || $hm eq "04:58" || $hm eq "05:58" || $hm eq "06:58" || $hm eq "07:58" || $hm eq "08:58" || $hm eq "09:58" || $hm eq "10:58" || $hm eq "11:58" || $hm eq "12:58" || $hm eq "13:58" || $hm eq "14:58" || $hm eq "15:58" || $hm eq "16:58" || $hm eq "17:58" || $hm eq "18:58" || $hm eq "19:58" || $hm eq "20:58" || $hm eq "21:58" || $hm eq "22:58" || $hm eq "23:58")) {