in reply to data structure
One way to keep "track of the changes" would be to use CGI::Session.
As has been mentioned, write some code and let us know how you get on.
Good luck!