PERL WARNING im Log betreffend expandJSON

Begonnen von SabineT, 14 Mai 2018, 19:48:00

Vorheriges Thema - Nächstes Thema

SabineT

Hallo!

Beim Neustart von FHEM bekomme ich im Log immer folgende Meldung:
PERL WARNING: Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by <-- HERE in m/^esplink.*t:esp-link:.{ <-- HERE .*}$/ at ./FHEM/98_expandJSON.pm line 64, <$fh> line 494.

Die Definition des betroffenen Devices ist:
Internals:
   DEF        esplink.*t:esp-link:.{.*}
   NAME       esplink_mqtt_json
   NR         173
   NTFY_ORDER 50-esplink_mqtt_json
   STATE      2018-05-14 19:30:50
   TYPE       expandJSON
   s_regexp   esplink.*t:esp-link:.{.*}
   t_regexp   .*
   version    1.12
   READINGS:
     2018-05-14 18:24:22   state           active
   helper:
Attributes:



Im Moment hab ich Perl 5.26 installiert, damit kommt eben nur das WARNING. Aber falls irgendwann mal Perl auf 5.30 durch ein update am Rechner landet könnte es dann Probleme geben.
Ich nehme an, im 98_expandJSON.pm müsste dann { mit einem \ escaped werden.

lg, Sabine

dev0

Deine Annahmne ist richtig, aber nicht nur im Modul, sondern auch in Deinem define.
Das Modul passe ich bei Gelegenheit an.

SabineT

beim define hab ich mich an der Commandref orientiert! Dort wird { nicht escaped... ;)
Complete definitions:
define ej1 expandJSON device:sourceReading:.{.*} targetReading
define ej2 expandJSON Sonoff.*:ENERGY.*:.{.*} (Power|.*day)
define ej3 expandJSON (?i).*_sensordev_.*:.*:.{.*}

Hab mein define jetzt aber angepasst, das WARNING wird jetzt nicht mehr ins Log geschrieben.

Danke und lg,
Sabine

dev0

Magst Du mal bitte die angehängte Version testen? Ich habe die angemäkelten "Unescaped left brace" in den regulären Ausdrücken maskiert, die Doku angepasst und eine _simple_ Dekodierung von JSON-Arrays eingebaut. Wenn auch bei Dir alles OK ist, dann checke ich die Version so ein.

SabineT

Zitat von: dev0 am 17 Mai 2018, 13:02:38
Magst Du mal bitte die angehängte Version testen? Ich habe die angemäkelten "Unescaped left brace" in den regulären Ausdrücken maskiert, die Doku angepasst und eine _simple_ Dekodierung von JSON-Arrays eingebaut. Wenn auch bei Dir alles OK ist, dann checke ich die Version so ein.
Wenn man den \ vorm { weglässt, kommt immer noch das Warning im Log. Aber jetzt passt wenigstens die Commandref. Und ich hab meine Device DEV inzwischen angepasst.
Einchecken solltest du die Version auf jeden Fall!

Danke und lg,
Sabine

dev0

ZitatWenn man den \ vorm { weglässt, kommt immer noch das Warning im Log.
Na klar, das liegt aber nicht am Modul, sondern an der verwendeten Perl Version (>= 5.26). Ich könnte die Meldung zwar abfangen, das Ergebnis wäre aber das Gleiche. Ich werde nicht anfangen Eingaben von Anwendern zu modifizieren...

Die aktualisierte Version habe ich gerade ins svn repository eingecheckt. Ab Morgen via Update...