Indeed, using CGI.pm for such is indeed <UPDATE> very nice. It also handles the problems associated with having a user submit invalid data and having to fill in the values they submitting correctly. </UPDATE> But these days i just make Mason components and use HTML::FillInForm to handle the 'stickiness' issue like so:
<&| /lib/util/fill_in_form.mas, data => \%ARGS &>
<form>
<!-- select, text inputs, radio boxes, etc. go here -->
</form>
</&>
And the fill_in_form.mas component instantiates the HTML::FillInForm object and ... MAGIC! =D
|