Probleme mit Smartmatch

Begonnen von mane88, 08 Oktober 2017, 21:08:10

Vorheriges Thema - Nächstes Thema

mane88

Hallo

bei folgendem Befehl


HT_.* { if( ($EVENT ~~ / /) and ($EVENT !~ /: /) ) {fhem("setreading $NAME $EVENT")} }

bekomme ich im Log seit neustem foglenden Fehler

2017.10.03 08:57:48 1: PERL WARNING: Smartmatch is experimental at (eval 1895) line 1.
2017.10.03 08:57:48 3: eval: my $SELF='ntfy_setreading';my $NAME='HT_Flur';my $EVTPART1='0';my $TYPE='CUL_HM';my $EVENT='actuator: 0';my $EVTPART0='actuator:';{ if( ($EVENT ~~ / /) and ($EVENT !~ /: /) ) {fhem("setreading $NAME $EVENT")} }


Ich verstehe dass das Problem an

~~
liegt, allerdings weiß ich nicht wie man es anders programmieren kann.

Kann mir ggf. jemand die richtigen Codezeile nennen.

Danke

viegener

Was willst Du denn mit dem smartmatch operator erreichen, willst Du nicht eher einen regex vergleich machen (also =~ )?
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

mane88

Das ist eine gute Frage, ich habe den Befehl aus dem Wiki
https://wiki.fhem.de/wiki/Dummy
ntfy_setreading

kopiert gehabt.

Ich habe das Notify mal deaktiviert und es scheint keine Auswirkungen zu haben. Dennoch würde ich gerne wissen was es genau bewirkt.

mumpitzstuff

HT_.* { if( ($EVENT =~ / /) and ($EVENT !~ /: /) ) {fhem("setreading $NAME $EVENT")} }

Das sollte genauso funktionieren. Smartmatch scheint im ersten Befehl einfach nach Leerzeichen zu suchen...


mane88

Zitat von: mumpitzstuff am 10 Oktober 2017, 10:32:26
HT_.* { if( ($EVENT =~ / /) and ($EVENT !~ /: /) ) {fhem("setreading $NAME $EVENT")} }

Das sollte genauso funktionieren. Smartmatch scheint im ersten Befehl einfach nach Leerzeichen zu suchen...

Klappt vielen Dank!