#!/usr/bin/perl -w use strict; use CGI qw/ header /; my($cgi) = CGI->new(); print header, &get_form_page( $cgi->param('next page') || 'page 1' ); sub get_form_page { $cgi->delete('next page'); <<__OUTPUT__ } Multi-Step Form Example

 

${\ &forms(@_) }

 

__OUTPUT__ sub preserve_previous { join '', map { eval <<'__PRESERVE__' } $cgi->param } <<__HIDDEN__ __HIDDEN__ __PRESERVE__ sub forms { eval( { 'page 1' => <<'__HTML__', <<__FORM__

Form Page One

Enter Your Name
Enter Your Age
__FORM__ __HTML__ 'page 2' => <<'__HTML__', <<__FORM__

Form Page Two

Enter Your Weight
Enter Your IQ
${\ (&preserve_previous||'') }
__FORM__ __HTML__ 'page 3' => <<'__HTML__', <<__FORM__

Form Page Three

Enter Your Gender
Enter Your Marital Status
${\ (&preserve_previous||'') }
__FORM__ __HTML__ 'thank you' => <<'__HTML__', <<__FORM__

All Done, Thank you ${\ ($cgi->param('Name')||'Anonymous person') }.

__FORM__ __HTML__ }->{ shift(@_) || 'page 1' } ) }