in reply to Re: Regex Help
in thread Regex Help

Unfortunately, Perl doesn't optimize [x]:

[~] $ perl -Mre=debug -wle'"x" =~ /x/' Freeing REx: `,' Compiling REx `x' size 3 first at 1 rarest char x at 0 1: EXACT <x>(3) 3: END(0) anchored `x' at 0 (checking anchored isall) minlen 1 Omitting $` $& $' support. EXECUTING... Guessing start of match, REx `x' against `x'... Found anchored substr `x' at offset 0... Guessed: match at offset 0 Freeing REx: `x' [~] $ perl -Mre=debug -wle'"x" =~ /[x]/' Freeing REx: `,' Compiling REx `[x]' size 10 first at 1 1: ANYOF[x](10) 10: END(0) stclass `ANYOF[x]' minlen 1 Omitting $` $& $' support. EXECUTING... Matching REx `[x]' against `x' Setting an EVAL scope, savestack=3 0 <> <x> | 1: ANYOF[x] 1 <x> <> | 10: END Match successful! Freeing REx: `[x]'

And in case that doesn't convince you:

[~] $ perl -MBenchmark -we'timethese(-5,{x=>q{"x"=~/x/},"[x]"=>q{"x"=~ +/[x]/}})' Benchmark: running [x], x, each for at least 5 CPU seconds... [x]: 4 wallclock secs ( 5.23 usr + 0.00 sys = 5.23 CPU) @ 85 +2787.57/s (n=4460079) x: 6 wallclock secs ( 5.25 usr + 0.00 sys = 5.25 CPU) @ 14 +99188.19/s (n=7870738)

P.S. I think you missed a backwhack in your RExen above; Perl is going to try to interpolate $flat.