FHEM Forum

FHEM => Frontends => readingsGroup / readingsHistory => Thema gestartet von: frank am 12 November 2019, 10:41:07

Titel: PERL WARNING: Unescaped left brace in regex is deprecated ... line 1383
Beitrag von: frank am 12 November 2019, 10:41:07
hallo andre,

es gibt schon länger folgenden fehler, der durch neuere perl versionen "sichtbar" wird und irgendwann anscheinend sogar zum absturz von fhem führt:

2019.11.11 10:08:27.759 1: PERL WARNING: Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^ValvePosition@{ <-- HERE valveOfDevice($DEVICE)}$/ at ./FHEM/33_readingsGroup.pm line 1383.
2019.11.11 10:08:27.760 1: stacktrace:
2019.11.11 10:08:27.760 1:     main::__ANON__                      called by ./FHEM/33_readingsGroup.pm (1383)
2019.11.11 10:08:27.760 1:     main::readingsGroup_Notify          called by fhem.pl (3750)
2019.11.11 10:08:27.760 1:     main::CallFn                        called by fhem.pl (3670)
2019.11.11 10:08:27.761 1:     main::DoTrigger                     called by fhem.pl (4036)
2019.11.11 10:08:27.761 1:     main::Dispatch                      called by ./FHEM/00_CUL.pm (948)
2019.11.11 10:08:27.761 1:     main::CUL_Parse                     called by ./FHEM/00_CUL.pm (832)
2019.11.11 10:08:27.762 1:     main::CUL_Read                      called by fhem.pl (3750)
2019.11.11 10:08:27.762 1:     main::CallFn                        called by fhem.pl (750)



eine lösung wurde auch schon beschrieben, siehe https://forum.fhem.de/index.php/topic,78337.msg798594.html#msg798594 (https://forum.fhem.de/index.php/topic,78337.msg798594.html#msg798594). die änderung der zeile 1383 läuft bei mir jetzt gut einen tag problemlos.

Zitat von: sfancy am 01 Mai 2018, 08:30:32
Na die fehlschlagende Stelle ist ja bei allen "at ./FHEM/33_readingsGroup.pm line 1383".

In Zeile 1383 steht
next if( defined($regex) && $reading !~ m/^$regex$/);
Wenn jetzt in $regex z.B. controlMode@{$DEVICE.'_Clima'} steht, dann kommt die obige Fehlermeldung.

Weshalb wird an der Stelle überhaupt ein Regex verwendet? Meiner Meinung nach ist
next if( defined($regex) && $reading ne $regex);
equivalent zu
next if( defined($regex) && $reading !~ m/^$regex$/);
Mit dem Unterschied, dass es auch in neuen Perl-Versionen fehlerfrei läuft.

Testet das mal ohne Gewähr. Leider ist die Funktion readingsGroup_Notify($$) in der die fehlerhafte Zeile steht ziemlich lang und unübersichtlich, so dass ich nicht alles umrissen habe.


ein weiterer thread ist https://forum.fhem.de/index.php/topic,71402.0.html (https://forum.fhem.de/index.php/topic,71402.0.html)


vielleicht bemerkst du ja diesen neuen thread, damit dieses alte problem mal aus der welt kommt.

gruss frank
Titel: Antw:PERL WARNING: Unescaped left brace in regex is deprecated ... line 1383
Beitrag von: OdfFhem am 12 November 2019, 11:42:01
Hallo,

dieses Problem gibt es auch noch im Zusammenhang mit u.a. MQTT_GENERIC_BRIDGE.
==> https://forum.fhem.de/index.php/topic,103529.msg984933.html#msg984933 (https://forum.fhem.de/index.php/topic,103529.msg984933.html#msg984933)

Dort hatte ich ein wenig recherchiert und die sich ergebende, minimale Änderung im entsprechenden Modul testweise vorgenommen.
Es lief ohne Auffälligkeiten, wurde aber irgendwann mit dem darauffolgenden Update wieder "entsorgt".

Unter Buster bzw. eher Perl 5.28.1 wurde die entsprechende Meldung deutlich "verschärft":

... PERL WARNING: Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.32), passed through in regex; ...
Titel: Antw:PERL WARNING: Unescaped left brace in regex is deprecated ... line 1383
Beitrag von: frank am 12 November 2019, 11:51:16
ZitatEs lief ohne Auffälligkeiten, wurde aber irgendwann mit dem darauffolgenden Update wieder "entsorgt".
"attr global exclude_from_update" kennst du?
Titel: Antw:PERL WARNING: Unescaped left brace in regex is deprecated ... line 1383
Beitrag von: OdfFhem am 12 November 2019, 12:03:31
Ist bekannt, aber man will sich ja nicht direkt ganz von den anderen Änderungen eines Moduls ausgrenzen ...