####
use strict;
use CGI;
use MIME::Base64;
my $q = new CGI;
my $mode = $q->param("mode");
if ($mode eq "form1") { &validateform1; }
elsif ...
####
use Storable;
# unpack history from form, and add latest form's settings
my %formhash = %{ thaw(
decode_base64( $q->param("history"))
) };
foreach $p ($q->params) { $formhash{$p}=$q->param($p}; }
# meat of program
# pack back up. $template contains template file contents.
my $frozen = encode_base64( freeze \%formhash ); # someone check this pls
$template =~ s/HISTORYBUF/$frozen/;
print $template; # do a "print $q->header" at top