Just another Perl shrine | |
PerlMonks |
Re: Re: Re: Re: A few random questions from Learning Perl 3by ihb (Deacon) |
on Jan 06, 2003 at 14:45 UTC ( [id://224642]=note: print w/replies, xml ) | Need Help?? |
By using carefull combination of the /e modifier and of the (?{}) programmatic pattern you can do using regex, everithing a parser will do.
My guess is that you probably mean the (??{...}) assertion. (?{...}) merely executes, whereas (??{...}) executes and interpolates. (A possibly confusing mnemonic would be that one ? would be like one q, which doesn't interpolate. Double ? would be like double q, which interpolates. It's different types of interpolations (one interpolates into the construction, one interpolates its result), so ignore this if it doesn't make sense to you.) A bit generalized you may say that: (?{...}) is used for debugging and/or setting state. (??{...}) is used for generating patterns at "match-time". Beware of using =~ inside either of these assertions though. The engine is known to often blow upon that. Update: A good example that uses both these assertion is to be found at Re: Capturing brackets within a repeat group [plus dynamic backreferences]. Hope I've helped, ihb
In Section
Seekers of Perl Wisdom
|
|