wake-up-neo.com

Fehler beim Ausdruck einer nicht ausgebauten linken Klammer

Ich bin kein Experte für Regex und kann nicht verstehen, was ich hier ändern soll.

Ich bekomme diese zwei Fehler

Eine nicht gekappte linke Klammer in Regex ist veraltet und wird in Regex durchgereicht. markiert durch <-- HERE in m/^(.*?)(\\)?\${ <-- HERE ([^{}]+)}(.*)$/ in /usr/share/Perl5/Debconf/Question.pm Zeile 72.

Eine nicht gekappte linke Klammer in Regex ist veraltet und wird in Regex durchgereicht. markiert durch <-- HERE in m/\${ <-- HERE ([^}]+)}/ in /usr/share/Perl5/Debconf/Config.pm Zeile 30.

Wenn ich zur Linie 72 springe, sehe ich das

while ($rest =~ m/^(.*?)(\\)?\${([^{}]+)}(.*)$/sg) {

Es ist eine Abwertung Warnung zeigt an, dass der Code nicht mehr funktionieren wird in der Zukunft .

Wenn Sie einen { buchstäblich abgleichen möchten, sollten Sie es entgehen. 

Mit anderen Worten, Sie können das Problem beheben (Stummschaltung der Warnung), indem Sie den ersten { durch \{ ersetzen.

9
ikegami

Wie wäre es mit der Verwendung des Unicode-Äquivalentwerts, anstatt der linken oder rechten Klammer zu entkommen? Wie so:

while ($rest =~ m/^(.*?)(\\)?\$\x7B([^\x7B\x7D]+)\x7D(.*)$/sg) {

Ich hatte das ähnliche Problem und das löste es für mich.

0
Jacques