Have you considered optimizing split a little bit.
Your regex finds 4 commas and returns whatever's between the 3rd and 4th. Your split finds 11 commas and returns a list of 12 items. It's no suprise that the regex is faster. If you're only trying to return a part of a string, a regex seems to be more appropriate than split. Still, if you like the idea of using split (it is shorter and more readable) -- try limiting split to 5 items like so:
@record = split( /\s*,\s*/o, $_, 5);
$field4 = $record[3];
I don't know if split will speed up from this, but it's worth a try.
--Shoeboy
perl -e "do {kill $java, $ada, $cobol, $pascal, $csh;} until die 'Just another perl hacker';"