Perl Waring in MQTT_GENERIC_BRIDGE

Begonnen von nuccleon, 06 September 2019, 22:37:50

Vorheriges Thema - Nächstes Thema

nuccleon

Hallo zusammen,

nachdem ich au perl 5.28.1 upgedated habe, bekommt ich im log folgende Warning:

2019.09.06 22:33:37 1: PERL WARNING: Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.32), passed through in regex; marked by <-- HERE in m/^(.*)({ <-- HERE .*})(.*)$/ at ./FHEM/10_MQTT_GENERIC_BRIDGE.pm line 1358, <$fh> line 882.


Ist erstmal nur zur Info. Aber Perl 5.32 wirds kritisch.

Gruß,
Claus

OdfFhem

Hallo,

gestern habe ich ein auf Raspbian Buster basierendes System aufgesetzt; dies verwendet automatisch eine neuere Perl-Version. Beim Einrichten von MQTT_GENERIC_BRIDGE bzw. nach jedem Neustart von FHEM wird die folgende Warnmeldung im Logfile generiert:

2019.10.18 09:01:24.669 1: PERL WARNING: Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.32), passed through in regex; marked by <-- HERE in m/^(.*)({ <-- HERE .*})(.*)$/ at ./FHEM/10_MQTT_GENERIC_BRIDGE.pm line 1358, <$fh> line 74.


Betroffen ist folglich die Zeile 1358 in 10_MQTT_GENERIC_BRIDGE.pm

if($str =~ m/^(.*)({.*})(.*)$/) {


Wenn ich ein wenig allgemeiner im Forum bzgl. der Warnmeldung suche, tauchen mehrere ähnlich lautende Logmeldungen für andere Module auf.


Eine allgemeine Recherche im Internet führt scheinbar zu folgender (warnfreier) Änderung für die Zeile 1358 in 10_MQTT_GENERIC_BRIDGE.pm:

if($str =~ m/^(.*)(\{.*})(.*)$/) {


Die sich ergebende Änderung basiert vor allem auf der folgenden Schilderung:
Zitat
While migrating code from an older perl version all literal left braces should be escaped now. A literal "{" should now be escaped in a pattern. If you want a literal left curly bracket (also called a left brace) in a regular expression pattern, you should now escape it by either preceding it with a backslash ("\{") or enclosing it within square brackets "[{]" ; otherwise a deprecation warning will be raised.