in reply to Alternative matches

Nothing "bad", but there is room for improvement.
use Regex::PreSuf; die presuf(split /\|/, 'new|old|number|start|simple|cross|heavy|die|ex +it'),$/; __END__ (?:cross|die|exit|heavy|n(?:ew|umber)|old|s(?:imple|tart))
A simple benchmark
use Benchmark 'cmpthese'; my @words = qw[ new old number start simple cross heavy die exit ]; my $string = join ' 0\4/f ', map( { rand $_ } 1 .. 60), map { $words[ +rand @words ] } 1 .. 20; cmpthese( -3, { straight => sub { my $matches = () = $string =~ /new|old|number|start|simple|cro +ss|heavy|die|exit/g; return; }, optimial => sub { my $matches = () = $string =~ /(?:cross|die|exit|heavy|n(?:ew| +umber)|old|s(?:imple|tart))/g; return; }, }); __END__ C:\>perl re.bench.pl Rate straight optimial straight 1948/s -- -15% optimial 2288/s 17% -- C:\>perl re.bench.pl Rate straight optimial straight 1994/s -- -14% optimial 2322/s 16% -- C:\>perl re.bench.pl Rate straight optimial straight 1963/s -- -16% optimial 2324/s 18% --

MJD says "you can't just make shit up and expect the computer to know what you mean, retardo!"
I run a Win32 PPM repository for perl 5.6.x and 5.8.x -- I take requests (README).
** The third rule of perl club is a statement of fact: pod is sexy.