2

为什么这个炸弹

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。

4

1 回答 1

5

5.18.0这是在和中修复的错误5.17.1

正则表达式中代码块的实现,例如 (?{}) 和 (??{}),已经过大量修改,以消除大量错误。用户可见的主要变化是:

  • 模式中的代码块现在与周围的代码在同一遍中解析;

  • 词法变量现在在作用域、递归和闭包行为方面是理智的。

于 2013-10-23T21:48:23.887 回答