Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw

Re: Re: Re: Re: A few random questions from Learning Perl 3

by ihb (Deacon)
on Jan 06, 2003 at 14:45 UTC ( #224642=note: print w/replies, xml ) Need Help??

in reply to Re: Re: Re: A few random questions from Learning Perl 3
in thread A few random questions from Learning Perl 3

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.

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,

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://224642]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (5)
As of 2020-02-17 09:24 GMT
Find Nodes?
    Voting Booth?
    What numbers are you going to focus on primarily in 2020?

    Results (71 votes). Check out past polls.