use warnings; use strict; use Benchmark qw(cmpthese); my $target = 'This is a string used to test the time required for a greedy match compared to a non-greedy match.'; my $greedy = qr/(\ba\b.*\bstring\b)/; my $non = qr/(\ba\b.*?\bstring\b)/; my ($matchG) = $target =~ $greedy; my ($matchN) = $target =~ $non; die "Matches generate different results\n" if $matchG ne $matchN; cmpthese ( -1, { 'Greedy' => sub {$target =~ $greedy;}, 'Non' => sub {$target =~ $non;} } ); Prints: Rate Greedy Non Greedy 162689/s -- -64% Non 456847/s 181% --