私は正規表現の専門家ではないので、ここで何を変更することになっているのか理解できません。
これら2つのエラーが発生する
正規表現でエスケープされていない左中括弧は廃止され、正規表現で渡されます。 /usr/share/Perl5/Debconf/Question.pmの72行目のm/^(.*?)(\\)?\${ <-- HERE ([^{}]+)}(.*)$/
で_<-- HERE
_によってマークされています。
正規表現でエスケープされていない左中括弧は廃止され、正規表現で渡されます。 /usr/share/Perl5/Debconf/Config.pm行30のm/\${ <-- HERE ([^}]+)}/
の_<-- HERE
_でマーク.
72行目にジャンプするとこれが見えます
_while ($rest =~ m/^(.*?)(\\)?\${([^{}]+)}(.*)$/sg) {
_
これは非推奨です警告コードが機能しなくなる将来的にを示します。
{
を文字どおり照合する場合は、エスケープする必要があります。
つまり、最初の{
を\{
に置き換えることで、問題を解決(警告を停止)できます。
左中括弧または右中括弧をエスケープする代わりに、Unicodeの同等の値を使用するのはどうですか?そのようです:
while ($rest =~ m/^(.*?)(\\)?\$\x7B([^\x7B\x7D]+)\x7D(.*)$/sg) {
私も同じような問題を抱えていましたが、これで解決しました。