PERL WARNING: Unescaped left brace in regex is deprecated ... line 1383

Begonnen von frank, 12 November 2019, 10:41:07

Vorheriges Thema - Nächstes Thema

frank

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. 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


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

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

OdfFhem

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

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; ...

frank

ZitatEs lief ohne Auffälligkeiten, wurde aber irgendwann mit dem darauffolgenden Update wieder "entsorgt".
"attr global exclude_from_update" kennst du?
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

OdfFhem

Ist bekannt, aber man will sich ja nicht direkt ganz von den anderen Änderungen eines Moduls ausgrenzen ...