#!/bin/perl use strict; use Digest::MD5 qw(md5 md5_hex md5_base64); use Time::HiRes qw(time ); #use re 'debug'  ; foreach my $regexcount (1,5,10) {         foreach my $regexlength (2,5,10,20)         {                 my @items       = map{ createRandomTextWithLength($regexlength); } (1..$regexcount);                 my $regexstr    = join('|',@items);                 my $regex               = qr /(?:$regexstr)/;                 foreach my $stringlength (100,1000,10000,100000)                 {                         print localtime()." Stringlength: $stringlength Number of Regexes:$regexcount Length of each Regex:$regexlength\n";                         my $teststring = createRandomTextWithLength($stringlength);                         my $timer;                         {                                 my $test=$teststring;                                 $timer =time;                                 $test =~ s/$regex/foobar/g;                                 printf("ElapsedTime:%5.4f  %20s %20s\n",time-$timer,md5_hex($test),$regex);                         }                         {                                 my $test=$teststring;                                 $timer =time;                                 foreach my $oneregex (@items)                                 {                                         $test =~ s/$oneregex/foobar/g;                                 }                                 printf("ElapsedTime:%5.4f  %20s %20s\n",time-$timer,md5_hex($test),' for loop over '.join(',',@items));                         }                         print "\n";                 }         } } sub createRandomTextWithLength($) {         my($count) = (@_);         my $string;         for (1.. $count)         {                 $string.=chr(ord('a')+rand(20));         }         return $string; }