While merlyn addressed your immediate issue, I would suggest restructuring your design so that you're using something like a relational database vs. regenerating this data every time.
My criteria for good software:
Does it work?
Can someone else come in, make a change, and be reasonably certain no bugs were introduced?