in reply to split with regex

I believe this should be helpful:

split /(?=\d\d:\d\d:\d\d)/, $data;

Replies are listed 'Best First'.
Re: Re: split with regex
by Bird (Pilgrim) on Nov 01, 2002 at 15:58 UTC

    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
A reply falls below the community's threshold of quality. You may see it by logging in.