There several approaches you can take and here is one.
First a quote direct from CGI::save method comment.
#### Method: save
# Write values out to a filehandle in such a way that they can
# be reinitialized by the filehandle form of the new() method
####
Ok with this knowledge in hand we can start.
- sub-class CGI (an example of this is CGI::Pretty look at it if you are not sure how to do this)
- two choices in your new sub-class, overide CGI::save method or creat a new save_db method either way 90% of the code you need is in original save method.
- Must overide CGI::new to handle case when previous state has been save using your new save_db form.
Hope this helps, good luck
mitd-Made in the Dark
'Interactive! Paper tape is interactive!
If you don't believe me I can show
you my paper cut scars!'