I've generally found that Perl's functions that operate on strings (join, index, etc.) are typically very fast.
You can compare with other solutions using Benchmark;
you can profile to find hotspots (e.g. Devel::NYTProf).
I can see a number of micro-optimisations you could make: replace $ref_len - 1 with $#$ref
and replace 1 + $#$ref with $ref_len.
That may gain you absolutely nothing but, I suppose, the code would be a little neater.
You could do a single join.
Then repeatedly chop the front off (index to locate JOIN then substr);
again, that may gain you nothing but perhaps worth a try.
I, and no doubt others, would be interested in the results
if you do decide to benchmark this against your current "brute force solution", a regex solution,
and anything else you may have come up with.
|