You've discovered why advanced data structures are necessary. (For reference, see perlref and perldsc.)
No matter how you store your data, you need to keep track of some additional information, namely, the children of the current message. You could set up something like this:
my %message = (
subject => 'this is a test message',
date => '10 June 2000, 10 minutes into the X-Files rerun',
author => 'chromatic',
id => '001',
children => [ 002, 004, 005 ],
text = 'Hello, this is just a test message.');
You could store that in a database or in a flat file somewhere. The important part is that you are keeping track of the threading in your persistent data structure. You'll have to come up with some way to update a parent message when someone replies to it, but getting your data structure right is 80% of the battle. |