为什么我不能在qr下连接在编译和运行时评估的模式?

Mar*_*eck 2 regex perl

为什么这个炸弹

perl -e 'print qr{$_(??{$_})}'
Run Code Online (Sandbox Code Playgroud)

虽然这两个工作分开:

perl -e 'print qr{$_}'
perl -e 'print qr{(??{$_})}'
Run Code Online (Sandbox Code Playgroud)

错误消息是

Eval-group not allowed at runtime, use re 'eval' in regex m/(??{$_})/ at -e line 1.
Run Code Online (Sandbox Code Playgroud)

真的,我应该升级Perl吗?我有5.14.4.

mob*_*mob 5

这是固定在一个错误5.18.05.17.1.

正则表达式中的代码块的实现,例如(?{})和(?? {}),已经进行了大量的重新设计,以消除大量的错误.用户可见的主要变化是:

  • 模式中的代码块现在在与周围代码相同的过程中进行解析;

  • 关于范围,递归和闭包行为,词汇变量现在都是合理的.