use Time::HiRes 'time'; #~ use re 'debug'; $TimesToDo = 1000; $NoOfChars = 100; $Multiplier = 2; $NoOfExec = 10; $InputString = "aaaaaaaaab"; for($i = 0; $i < $NoOfExec; $i++){ $NoOfChars = $NoOfChars * $Multiplier; $TestString = $InputString x $NoOfChars; $Count = $TimesToDo; $StartTime = time(); while ($Count-- > 0) { $TestString =~ m/^(b|a)*$/; } $EndTime = time(); $Diff = $EndTime - $StartTime; $Count = $TimesToDo; $StartTime = time(); while ($Count-- > 0) { $TestString =~ m/^(a+|b)*$/; } $EndTime = time(); printf("%d;%.3f;%.3f\n", $NoOfChars, $Diff, $EndTime - $StartTime); }