编译并安装 GNU automake 1.15 后,每次运行 automake 时都会出现此错误:
正则表达式中未转义的左括号已被弃用,在正则表达式中传递;
在 m/\${ <-- HERE ([^ \t=:+{}]+)}/ 中用 <-- HERE 标记
位于 /usr/local/bin/automake 第 3936 行
我有 perl v5.22.0
答案1
弃用警告本身并不是一个问题。
这Perl 5.21.1 发行说明表明:
如果您想要在正则表达式模式中使用文字左花括号(也称为左括号),您现在应该通过在它前面加上反斜杠(“\{”)或将其括在方括号“[{]”中,或者使用 \Q 来对其进行转义;否则将引发弃用警告。此功能首次宣布将在 v5.16 版本中推出;它将允许将来对该语言进行扩展。
你可以报告此错误对于 Automake 的作者来说,尽管他们可能希望保留与旧版本 Perl 的兼容性。
答案2
我收到此错误只是因为我在 bash 中错误地使用了“print”而不是 echo:
print "abcd123" | perl -e 'myscript' #causes error
解决方案是使用 echo,我只是通过混合语言混淆了 print/echo
echo "abcd123" | perl -e 'myscript' #is fine
printf "abcd123" | perl -e 'myscript' #is fine too, "printf" not print