In a regex with an interpolated variable, such as /foo($a)bar/ the user is not allowed into interpolate (?{CODE}) items unless the "use re 'eval'" pragma is in scope. You are of course allowed to write /foo(?{CODE})($a)bar/ and this is OK as long as the interpolated $a does not contain (?{CODE}) items. The way this is implemented is that the regex engine counts up the number of appearances of (?{CODE}) items before and after interpolation, and throws a fatal run-time error if the number afterwards is larger: Eval-group not allowed at runtime... You might expect that "use re 'eval'" simply disables this check, but you would be wrong. Instead, the "use re 'eval'" pragma fakes up the 'before' count so that it appears that the regex originally contained 4,294,967,295 appearances of (?{CODE}) items. (The code is at pp_ctl.c:114 in 5.6.0, should you want to visit it.) Mark-Jason Dominus mjd@plover.com I am boycotting Amazon. See http://www.plover.com/~mjd/amazon.html for details. ==== Want to unsubscribe from Fun With Perl? Well, if you insist... ==== Send email to <fwp-request@technofile.org> with message _body_ ==== unsubscribe