#!/usr/bin/perl use strict; use warnings; use Benchmark; Benchmark::cmpthese(-1, {   bad_1 => \&rx_bad_1,   bad_2 => \&rx_bad_2,   good  => \&rx_good,   good_2  => \&rx_good_2,   good_3  => \&rx_good_3,   good_4  => \&rx_good_4 }); sub rx_bad_1 {  for (0..100000) { my $rx = qr/\d+/o; 1 =~ /$rx/; } } sub rx_bad_2 {  for (0..100000) { my $rx = qr/\d+/;  1 =~ /$rx/o; } } sub rx_good {   my $rx = qr/\d+/; for (0..100000) { 1 =~ /$rx/o; } } sub rx_good_2 { my $rx = qr/\d+/; for (0..100000) { 1 =~ /$rx/; } } sub rx_good_3 { my $rx = '\d+';   for (0..100000) { 1 =~ /$rx/o; } } sub rx_good_4 { my $rx = '\d+';   for (0..100000) { 1 =~ /$rx/; } }