FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: FHEM_Starter am 04 November 2023, 15:41:35

Titel: [Gelöst] Unescaped left brace in regex is deprecated
Beitrag von: FHEM_Starter am 04 November 2023, 15:41:35
Hallo,
ich habe ein eventMap definiert, welches auch funktioniert. Im LogFile bin ich jedoch auf einen Hinweis gestossen:
PERL WARNING: Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/on-for-timer { <-- HERE ((ReadingsVal("Kaminfeuer_Parameter","Einschaltdauer","60"))*60)}/

Mein eventMap sieht so aus:
/on-for-timer {((ReadingsVal("Kaminfeuer_Parameter","Einschaltdauer","60"))*60)}:an/ /off:aus/ /on:an/
Alle Versuche, die geschwungenen Klammern zu escapen (per \) schlugen fehl. ich erhalte immer beim Schalten
please enter the duration in seconds
Kann mir bitte jemand behilflich sein?
Danke im voraus und Gruß
Wolfgang


Titel: Aw: Unescaped left brace in regex is deprecated
Beitrag von: betateilchen am 04 November 2023, 16:09:47
Zum einen sind da zu generell zuviele Klammern im Spiel.
Zum anderen ist das mit dem perl Code in eventMap in dieser Form immer ein Krampf.

Deshalb bin ich dazu übergangen, in solchen Fällen das Attribut eventMap immer komplett in perl abzubilden und mit der "hash-Syntax" zu arbeiten. Das funktioniert immer und ist auch logisch besser nachvollziehbar. Das Ganze ist auch gut in der commandref beschrieben.

ZitatThe explicit variant of this attribute has the following syntax:
attr store eventMap { dev=>{'on'=>'open'}, usr=>{'open'=>'on'} }
attr store eventMap { dev=>{'^on(-for-timer)?(.*)'=>'open$2'}, usr=>{'^open(.*)'=>'on$1'}, fw=>{'^open(.*)'=>'open'} }
Titel: Aw: Unescaped left brace in regex is deprecated
Beitrag von: FHEM_Starter am 04 November 2023, 16:56:04
Hallo betateilchen,

Danke dass Du Dir die Zeit genommen hast.
Ja, diesen Hinweis in der CommandRef hatte ich auch schon entdeckt, jedoch habe ich es nur in Ansätzen verstanden.

Ich bin mir nicht sicher, ob es perfekt ist, aber es funktionert.
{ usr=>{'an'=>'on-for-timer ' .(ReadingsVal("Kaminfeuer_Parameter","Einschaltdauer","60")*60),'aus'=>'off'} }
Nochmals Danke und ein schönes Wochenende
Gruß Wolfgang