in reply to syntax question

Consider also that regex are so optimezed so that the second option, using substr, 'may' become a 'little' faster then regexes only when you operate against huge data in a foreach loop:
#10 fields in the array iterating over: Benchmark: running Regex, Substr for at least 4 CPU seconds... Regex: 4.58121 wallclock secs ( 4.18 usr + 0.02 sys = 4.20 CPU) + @ 3968640.46/s (n=16656384) Substr: 4.38291 wallclock secs ( 4.32 usr + 0.00 sys = 4.32 CPU) + @ 3927240.92/s (n=16969608) #100 fields Benchmark: running Regex, Substr for at least 4 CPU seconds... Regex: 4.56133 wallclock secs ( 4.12 usr + -0.01 sys = 4.11 CPU) + @ 3995786.36/s (n=16402703) Substr: 4.29298 wallclock secs ( 4.03 usr + 0.00 sys = 4.03 CPU) + @ 4190639.34/s (n=16871514) #1000 fields ###Regex is faster!! (tested 5 times) Benchmark: running Regex, Substr for at least 4 CPU seconds... Regex: 4.1849 wallclock secs ( 4.03 usr + 0.01 sys = 4.04 CPU) +@ 4139558.42/s (n=16723816) Substr: 5.5707 wallclock secs ( 4.26 usr + 0.00 sys = 4.26 CPU) +@ 3843370.27/s (n=16368914) #10000 fields Benchmark: running Regex, Substr for at least 4 CPU seconds... Regex: 4.87697 wallclock secs ( 4.68 usr + 0.00 sys = 4.68 CPU) + @ 3600221.37/s (n=16849036) Substr: 4.21117 wallclock secs ( 3.99 usr + 0.03 sys = 4.02 CPU) + @ 4352730.93/s (n=17519742) #BUT ALSO 10000 fields Benchmark: running Regex, Substr for at least 4 CPU seconds... Regex: 4.32358 wallclock secs ( 4.09 usr + -0.02 sys = 4.07 CPU) + @ 3946014.74/s (n=16064226) Substr: 4.44415 wallclock secs ( 4.10 usr + 0.03 sys = 4.13 CPU) + @ 3892862.84/s (n=16093095)
L*
There are no rules, there are no thumbs..
Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.