use Time::HiRes qw(sleep time); my $time = time; for (1..1_000_000) { my $str = '123456789'; my ($a,$b) = $str =~ m/(23)[^8]+(8)/g; # about 1.88 sec #my ($a,$b) = $str =~ m/(23)[^8]+(8)/; # about 2.15 sec #my ($a) = $str =~ m/(23)/g; # about 1.23 sec #my ($a) = $str =~ m/(23)/; # about 1.41 sec } say time - $time;