if (uc $error eq "ERROR"){ # . . . } #### if (lc $error eq "error"){ # . . . } #### #!/usr/bin/perl use strict; use warnings; use Benchmark qw/:all :hireswallclock/; my $test_str='error'; my @test=map { my @chr=("\0", " "); local $_=$test_str; s/./$& ^ $chr[rand 2]/ge} 1..100; no warnings 'void'; cmpthese -30, { regex => sub { /^\Q$test_str\E$/i for @test }, lc => sub { $test_str eq lc for @test} }, 'all'; __END__ #### Benchmark: running lc, regex for at least 30 CPU seconds... lc: 34.068 wallclock secs (34.10 usr 0.00 sys + 0.00 cusr 0.00 csys = 34.10 CPU) @ 19917.24/s (n=679178) regex: 31.518 wallclock secs (31.53 usr 0.00 sys + 0.00 cusr 0.00 csys = 31.53 CPU) @ 13689.50/s (n=431630) Rate regex lc regex 13690/s -- -31% lc 19917/s 45% -- #### Benchmark: running lc, regex for at least 30 CPU seconds... lc: 31.4462 wallclock secs (31.45 usr 0.00 sys + 0.00 cusr 0.00 csys = 31.45 CPU) @ 26138.57/s (n=822058) regex: 31.8579 wallclock secs (31.86 usr 0.00 sys + 0.00 cusr 0.00 csys = 31.86 CPU) @ 14326.49/s (n=456442) Rate regex lc regex 14326/s -- -45% lc 26139/s 82% --