> I hope I don't have any bugs here :) Just one. :)
Your expressions all say \d instead of \d? for the second digit in each set, while the simple one correctly has \d?. So your expressions had an unfair advantage and as a result finish faster. Add \d? to your expressions, and you should find that "simple", besides probably being the easiest to read, is also the most efficient of the expressions listed. (Note that I removed the obviously inefficient ones.) use strict; use warnings; use Benchmark 'cmpthese'; my $field = '19.12.12'; cmpthese -5, { simple => sub { if ( $field =~ /^[1-9]\d?\.[1-9]\d?\.[1-9]\d?$/ ) {} }, short => sub { if ( $field =~ /^([1-9]\d?\.){2}[1-9]\d?$/ ) {} }, shortwoc => sub { if ( $field =~ /^(?:[1-9]\d?\.){2}[1-9]\d?$/ ) {} }, trickywoc => sub { if ( $field =~ /^(?:[1-9]\d?(?:\.[1-9]\d?){2})$/ ) {} }, }; __END__ Rate short shortwoc trickywoc simple short 677138/s -- -23% -25% -40% shortwoc 880536/s 30% -- -2% -22% trickywoc 901095/s 33% 2% -- -20% simple 1127127/s 66% 28% 25% -- second benchmark: my $field = '19.12.02'; Rate short shortwoc trickywoc simple short 927396/s -- -10% -12% -29% shortwoc 1027728/s 11% -- -3% -22% trickywoc 1055892/s 14% 3% -- -19% simple 1310837/s 41% 28% 24% -- > Have a nice day. You too. I learned a lot from this, so thanks. -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>