use Benchmark 'cmpthese'; $match=0; @strings=qw( abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz_est abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz_0 est_abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz 0_abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyzabcdefghijk_est_lmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyzabcdefghijk_0_lmnopqrstuvwxyz ); cmpthese -5, { slower => <<'EOFCODE', for my $str (@::strings) { if($::string =~ /(?:est|\d)/){ $::match++; } } EOFCODE slower2 => <<'EOFCODE', for my $str (@::strings) { if($::string =~ /(?:\d|est)/){ $::match++; } } EOFCODE faster => <<'EOFCODE', for my $str (@::strings) { if ($::string =~ /est/ || $::string =~ /\d/){ $::match++; } } EOFCODE faster2 => <<'EOFCODE', for my $str (@::strings) { if ($::string =~ /\d/ || $::string =~ /est/){ $::match++; } } EOFCODE }; __END__