Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

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

by ihb (Deacon)
on Jan 06, 2003 at 14:45 UTC ( [id://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.

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

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others admiring the Monastery: (1)
As of 2024-04-25 00:49 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found