in reply to Efficiency revisited

If all the handling of these variables is going to stay within the scope of the while loop, why not just declare them as part of the split list assignment : my ($x, $y, $x) = split ('foo', @bar);)? If they are going to be external to the loop, you might look at using a list of hashes, so that you can refer to any element by using $log[line#]{'element name'}. Just my two cents.