この "(?{ code })" は、正規表現のパターン中に、 その合致範囲 "()" に対してどのような処理ができるか コードを記述できる。$^N 変数から、マッチした文字列を とりだして、別の変数にセットできる。
また、()* のような正規表現を利用して、
( a (?{ local $cnt++; } ) )*
のように書くと、$cnt に、マッチした回数が加算される。
正規表現の最初に書けば、変数を初期化できる。
しかし、読みにくいというか、perlらしいのだろうけれども、
すごい。しかしこれだとデータとコードが本当に混在してしまって、
これでいいのか?という気も。そういうわけか、「だまって
削除するかもしれない」、と警告がマニュアルに書かれている。
"(?{ code })" は深いネストがある正規表現内で、 特定部分のマッチ文字列をとりだしたいときに便利そう。 ()がネストしたり、条件分岐が増えると、特定のマッチ文字列を とりだしにくくなる。

