in reply to Re: split with regex
in thread split with regex
rasta provides an elegant solution to your problem, if you need to use split. I tend to avoid fancy things like lookahead assertions if possible, if only to simplify maintenance. Also, since I was curious, I thought I'd benchmark our two solutions.
my $data = "00:01:00Something here bla bla blaTYPE00:02:00". "Something here bla bla blaANOTHERTYPE00:03:00S". "omething here bla bla blaEVENMORETYPES"; use Benchmark; timethese (100000, { withsplit => sub { my @lines = split /(?=\d\d:\d\d:\d\d)/, $data; }, nosplit => sub { my @lines = $data =~ /(\d{2}:\d{2}:\d{2}[^\d]*)/g; } } );
...gives me...
Benchmark: timing 100000 iterations of nosplit, withsplit... nosplit: 6 wallclock secs ( 7.09 usr + 0.00 sys = 7.09 CPU) @ 14 +104.37/s (n=100000) withsplit: 13 wallclock secs (13.85 usr + 0.00 sys = 13.85 CPU) @ 72 +20.22/s (n=100000)
I don't know if it's split or the lookahead that's slowing things down, but I thought you might be interested in my results anyway.
-Bird
|
|---|