in reply to Re: Removing digits until you see | in a string
in thread Removing digits until you see | in a string

See, I would have used something like ($data_hash{$index}) = $str =~ m/^(.+?)(?=\|)/. I wondered if it was faster to stop on the pipe with [^|] or use a lookahead:

use strict; use Benchmark; my $index; my $str = "lol238923892382938|lol282812|asdfasdf|asdfasdfasdf"; timethese(5000000, { 'stopper' => sub { ($index) = $str =~ m/([^|]+)/ }, 'lookahead' => sub { ($index) = $str =~ m/^(.+?)(?=\|)/ }, 'splitter' => sub { ($index) = split /\|/, $str }, });

The lookahead is technically faster on my machine, but not by enough to count as a victory. I'd be curious about other's results. Sadly, the splitter wins over the regulars by a similar (i.e. smallish) amount.

-Paul