Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re^2: Precompiling substitution regex

by FreakyGreenLeaky (Sexton)
on Jun 17, 2011 at 11:57 UTC ( #910131=note: print w/ replies, xml ) Need Help??


in reply to Re: Precompiling substitution regex
in thread Precompiling substitution regex

Thanks moritz, that will work. Is there any way of achieving that without having the substitutions in a separate array?


Comment on Re^2: Precompiling substitution regex
Re^3: Precompiling substitution regex
by moritz (Cardinal) on Jun 17, 2011 at 12:04 UTC
    Well, you could of course store an array of closures that each does a substitution, and call those in turn - but it might slow down things again. Or you could store regexes and substitutions in the same array, but distinguished by different indexes (even/odd or first half/second half).

    But I don't think you can easily store a precompiled whole substitution in a single scalar.

      ... store regexes and substitutions in the same array, but distinguished by different indexes ...

      An example of what I think moritz is referring to (and the way I think I would approach the problem):

      >perl -wMstrict -le "my @subs = ( [ qr{ (?i) foo | bar }xms => 'quux' ], [ qr{ fee | fie | foe }xms => 'fum' ], ); ;; my $string = 'foo fee BAR foe fOo fie FOE'; for my $ar_sub (@subs) { my ($search, $replace) = @$ar_sub; $string =~ s{$search}{$replace}g; } print qq{'$string'}; " 'quux fum quux fum quux fum FOE'

      Note that regex modifiers like /g cannot be associated with each individual regex using this approach; something a little more fancy is needed for that.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (7)
As of 2015-07-02 02:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (25 votes), past polls