为什么这个炸弹
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。
答案 0 :(得分:5)
这是5.18.0
和5.17.1
中修复的错误。
正则表达式中的代码块的实现,例如(?{})和(?? {}),已经进行了大量的重新设计,以消除大量的错误。主要的用户可见更改是:
模式中的代码块现在在与周围代码相同的传递中解析;
关于范围,递归和关闭行为,词汇变量现在都是合理的。