use Benchmark 'cmpthese'; my $sref = { neglook => sub { my $string = "abababa"; $string =~ s/(b)(?!.*b)/x/; return; }, rindex => sub { my $string = "abababa"; my $ri = rindex( $string, 'b' ); substr( $string, $ri, 1) = 'x'; return; }, sexeger => sub { my $string = "abababa"; $string = reverse $string; $string =~ s/b/x/; $string = reverse $string; return; }, }; cmpthese( 3_000_000, $sref ); __END__ perl5.8.4 Rate neglook rindex sexeger neglook 523195/s -- -21% -36% rindex 659776/s 26% -- -19% sexeger 813670/s 56% 23% -- perl5.6.2 Rate neglook rindex sexeger neglook 719252/s -- -19% -20% rindex 888889/s 24% -- -1% sexeger 901442/s 25% 1% --