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; } } ); #### Benchmark: timing 100000 iterations of nosplit, withsplit... nosplit: 6 wallclock secs ( 7.09 usr + 0.00 sys = 7.09 CPU) @ 14104.37/s (n=100000) withsplit: 13 wallclock secs (13.85 usr + 0.00 sys = 13.85 CPU) @ 7220.22/s (n=100000)