use Benchmark; $iterations = 1000000; $name1 = "Alternation"; $code1 = ' $_="ABBA"; s/(A|B)/X/g; '; $name2 = "Class"; $code2 = ' $_="ABBA"; s/[AB]/X/g; '; $name3 = "Substitution"; $code3 = ' $_="ABBA"; s/A/X/g; '; $name4 = "Transliterate"; $code4 = ' $_="ABBA"; tr/A/X/; '; timethese($iterations, {$name1 => $code1, $name2 => $code2, $name3 => $code3, $name4 => $code4, } ); __END__ C:\>perl test.pl Benchmark: timing 1000000 iterations of Alternation, Class, Substitution, Transliterate... Alternation: 36 wallclock secs (35.92 usr + 0.00 sys = 35.92 CPU) @ 27839.64/s (n=1000000) Class: 23 wallclock secs (23.12 usr + 0.00 sys = 23.12 CPU) @ 43252.60/s (n=1000000) Substitution: 20 wallclock secs (20.81 usr + 0.00 sys = 20.81 CPU) @ 48053.82/s (n=1000000) Transliterate: 8 wallclock secs ( 8.07 usr + 0.00 sys = 8.07 CPU) @ 123915.74/s (n=1000000) C:\>