in reply to Changing records

I would go with #2. In technical terms, this is referred to as database normalization. See this blurb from devshed that explains the benefits.

I'd also recommend using a more easily updated datastore like a tied hash. That will make it easier for you to manipulate records without rewriting the whole file.

Last thought...you may want to look into some sort of locking mechanism to handle multiple concurrent updates.