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