in reply to Passing variables to another script (theory)

To answer your last question first: To be able to restore the values of chekboxes, you could either re-write the page with placekeepers fpr HTML::Template
<input type=checkbox name=foo <TMPL_IF name="foo_checked">CHECKED </TM +PL_IF> >
Or, for ease of programming, you could use HTML::FillInForm which parses the form on the fly, and fills in the values you pass it.

As for how to pass values from one CGI to another, I suggest that your data structure should be as close as possible to the parameter passing as implemented by CGI - after all, you're already prepared to handle that.

If you use a DB_File, then you make the name of each param the key, and it's value the value. And yes, you'll have to run a join on those params that return an array. Be carefull to use a separator unlikely to appear in the name of the param (or checkbox). 0x00 is a good value for such uses.

Of course, since you gave the file the .cgi extension, you could just call it with a complete CGI style request.