#!/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__ }
<?xml version="1.0" encoding='ISO-8859-1'?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml"
xml:lang="en"
lang="en">
<head>
<title>Multi-Step Form Example</title>
</head>
<body>
<p> </p>
${\ &forms(@_) }
<p> </p>
</body>
</html>
__OUTPUT__
sub preserve_previous { join '', map { eval <<'__PRESERVE__' } $cgi->param }
<<__HIDDEN__
<input
type="hidden"
name="$_"
value="${\ join ',', @{[ $cgi->param($_) ]} }" />
__HIDDEN__
__PRESERVE__
sub forms { eval( {
'page 1' => <<'__HTML__',
<<__FORM__
<h2>Form Page One</h2>
<form
name="page 1"
method="post"
action="${\ ($cgi->self_url('query_string' => 0) || '') }">
<input type="hidden" name="next page" value="page 2" />
<table>
<tr>
<td> Enter Your Name </td>
<td> <input type="text" name="Name" /> </td>
</tr>
<tr>
<td> Enter Your Age </td>
<td> <input type="text" name="Age" /> </td>
</tr>
<tr>
<td colspan="2"> <input type="submit" value="go to step 2" /> </td>
</tr>
</table>
</form>
__FORM__
__HTML__
'page 2' => <<'__HTML__',
<<__FORM__
<h2>Form Page Two</h2>
<form
name="page 2"
method="post"
action="${\ ($cgi->self_url('query_string' => 0) || '') }">
<input type="hidden" name="next page" value="page 3" />
<table>
<tr>
<td> Enter Your Weight </td>
<td> <input type="text" name="Weight" /> </td>
</tr>
<tr>
<td> Enter Your IQ </td>
<td> <input type="text" name="IQ" /> </td>
</tr>
<tr>
<td colspan="2"> <input type="submit" value="go to step 3" /> </td>
</tr>
</table>
${\ (&preserve_previous||'') }
</form>
__FORM__
__HTML__
'page 3' => <<'__HTML__',
<<__FORM__
<h2>Form Page Three</h2>
<form
name="page 3"
method="post"
action="${\ ($cgi->self_url('query_string' => 0) || '') }">
<input type="hidden" name="next page" value="thank you" />
<table>
<tr>
<td> Enter Your Gender </td>
<td> <input type="text" name="Gender" /> </td>
</tr>
<tr>
<td> Enter Your Marital Status </td>
<td> <input type="text" name="MStatus" /> </td>
</tr>
<tr>
<td colspan="2"> <input type="submit" value="finish questions" /> </td>
</tr>
</table>
${\ (&preserve_previous||'') }
</form>
__FORM__
__HTML__
'thank you' => <<'__HTML__',
<<__FORM__
<h2>All Done, Thank you ${\ ($cgi->param('Name')||'Anonymous person') }.</h2>
<div>
<ul>
<li>
You are ${\ ($cgi->param('Age')||'0') } years old,
or so you say...
</li>
<li>
A ${\ ($cgi->param('MStatus')||'single') }
${\ ($cgi->param('Gender')||'eunuch') }
</li>
<li>
-and you expect me to believe you only weigh
${\ ($cgi->param('Weight')||'0') } lbs. and have an IQ of
${\ ($cgi->param('IQ')||'0') }.
</li>
</ul>
</div>
__FORM__
__HTML__
}
->{ shift(@_) || 'page 1' } )
}