为什么这个炸弹
perl -e 'print qr{$_(??{$_})}'
虽然这两个单独工作:
perl -e 'print qr{$_}'
perl -e 'print qr{(??{$_})}'
错误信息是
Eval-group not allowed at runtime, use re 'eval' in regex m/(??{$_})/ at -e line 1.
真的,我应该升级 Perl 吗?我有 5.14.4。
5.18.0
这是在和中修复的错误5.17.1
。
正则表达式中代码块的实现,例如 (?{}) 和 (??{}),已经过大量修改,以消除大量错误。用户可见的主要变化是:
模式中的代码块现在与周围的代码在同一遍中解析;
词法变量现在在作用域、递归和闭包行为方面是理智的。