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 に答える