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
In reply to Re^2: Removing digits until you see | in a string
by jettero
in thread Removing digits until you see | in a string
by kevyt
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |