Greetings,
I'd like to precompile substitution regular expressions in a similar way to precompiling match regexes:
my @MATCH_RE = (
q%(?:this|or|that)%,
);
my @MATCH_REC = map { qr/$_/ } @MATCH_RE;
sub doit {
my($str) = @_;
for my $re (@MATCH_REC) {
return 0 if $str =~ m%$re%i;
}
return 1;
}
The above provides the performance gains as expected and works well.
Is it possible to do the same thing for substitution where the replacement string and modifiers can vary, but are hard-coded? For example (incorrect code, I know):
my @SUB_RE = (
q@%(?:this|or|that)%bob%gsi@,
q@%(?:One|Two|Three)%Four%gs@, # note different modifier
);
# or, with 's' embedded
my @SUB_RE2 = (
q@s%(?:this|or|that)%bob%gsi@,
q@s%(?:One|Two|Three)%Four%gs@, # note different modifier
);
my @SUB_REC = map { qr/$_/ } @SUB_RE;
sub doit {
my($str) = @_;
for my $re (@SUB_REC) {
$str =~ $re;
}
return $str;
}
Any pointers would be appreciated.