o - pretend to optimize your code, but actually introduce bugs #### #!/usr/bin/env perl use strict; use warnings; use Benchmark 'cmpthese'; my $str = 'xyz'; my $re = qr{^xyz$}; cmpthese 0 => { use_m => \&use_m, as_qr => \&as_qr, use_o => \&use_o, raw_m => \&raw_m, raw_o => \&raw_o, }; sub use_m { $str =~ m/$re/ and return; } sub as_qr { $str =~ $re and return; } sub use_o { $str =~ m/$re/o and return; } sub raw_m { $str =~ m/^xyz$/ and return; } sub raw_o { $str =~ m/^xyz$/o and return; } #### Rate as_qr use_m use_o raw_m raw_o as_qr 2729934/s -- -0% -71% -73% -73% use_m 2734042/s 0% -- -71% -73% -73% use_o 9454792/s 246% 246% -- -6% -7% raw_m 10094766/s 270% 269% 7% -- -1% raw_o 10207253/s 274% 273% 8% 1% --