if( $vartocheck eq lc($firstchar) ) { ++$foo; } #### #! /usr/bin/perl -w use strict; use Benchmark; use vars qw/$vartocheck $firstchar/; $vartocheck = 'x'; $firstchar = 'y'; my $iters = shift || 10000; timethese $iters, { 'eq !=' => sub { return $vartocheck eq lc($firstchar) }, 're !=' => sub { return $vartocheck =~ /\Q$firstchar\E/i }, }; $firstchar = 'x'; timethese $iters, { 'eq ==' => sub { return $vartocheck ne lc($firstchar) }, 're ==' => sub { return $vartocheck !~ /\Q$firstchar\E/i }, }; __END__ % perl eqre 10000000 Benchmark: timing 10000000 iterations of eq !=, re !=... eq !=: 8 wallclock secs ( 8.00 usr + 0.02 sys = 8.02 CPU) @ 1246882.79/s (n=10000000) re !=: 14 wallclock secs (13.74 usr + 0.10 sys = 13.84 CPU) @ 722543.35/s (n=10000000) Benchmark: timing 10000000 iterations of eq ==, re ==... eq ==: 8 wallclock secs ( 6.98 usr + 0.04 sys = 7.02 CPU) @ 1424501.42/s (n=10000000) re ==: 17 wallclock secs (16.76 usr + -0.01 sys = 16.75 CPU) @ 597014.93/s (n=10000000) #### timethese $iters, { 'eq !=' => sub { return $vartocheck eq lc($firstchar) }, 're !=' => sub { return $vartocheck =~ /^\Q$firstchar\E$/i }, }; __END__ % perl eqre 10000000 Benchmark: timing 10000000 iterations of eq !=, re !=... eq !=: 7 wallclock secs ( 7.42 usr + 0.00 sys = 7.42 CPU) @ 1347708.89/s (n=10000000) re !=: 26 wallclock secs (25.89 usr + 0.01 sys = 25.90 CPU) @ 386100.39/s (n=10000000) Benchmark: timing 10000000 iterations of eq ==, re ==... eq ==: 8 wallclock secs ( 6.60 usr + 0.00 sys = 6.60 CPU) @ 1515151.52/s (n=10000000) re ==: 27 wallclock secs (27.77 usr + 0.00 sys = 27.77 CPU) @ 360100.83/s (n=10000000)