I like using one program. I think
Sifmole's idea of using
CGI::Application is well suited for a script like this. Reason being is that it will help you to keep things organized. As far as the HTML goes, use
HTML::Template or
Template::ToolKit to fill it out and keep the HTML away from the perl side of things. For validating form input use
HTML::FormValidator, it will allow you to make rules for each field very easily.
For saving the information of a multiple page form I would use MySQL if you have it avalable. If you don't, then use
IPC::Shareable and keep track of the session by using a session id placed in a cookie (encrypt it if you can - see
Crypt::CBC). Don't forget to timestamp the session as well as keep the session id available somewhere so that if somone bails out in the middle, you can clean it up later. For more ways to keep state I would suggest you get a hold of
Writing
Apache Modules
with Perl and C also known as "The Eagle Book". I know you may be writing this in regular CGI but still it is a useful book for ideas on how to do things. You might also like to get a hold of
Writing CGI Applications with Perl as well.
Good luck,
Brother BMaximus
update:Fixed some lousy grammatical errors and linked IPC::Shareable to
CPAN