use CGI
qw(:standard :html3);
# Some constants to use in our form.
@colors=qw
/aqua black blue fuschia gray green lime maroon navy olive
purple red silver teal white yellow
/;
@sizes=("<default>",1..7);
# recover the "preferences" cookie.
%preferences = cookie
('preferences');
# If the user wants to change the background color or her
# name, they will appear among our CGI parameters.
foreach ('text','background','name','size') {
$preferences{$_} = param
($_) || $preferences{$_};
$preferences{'background'} = $preferences{'background'} || 'silver';
$preferences{'text'} = $preferences{'text'} || 'black';
# Refresh the cookie so that it doesn't expire. This also
# makes any changes the user made permanent.
$the_cookie = cookie
(-name
=>'preferences',
print header
(-cookie
=>$the_cookie);
# Adjust the title to incorporate the user's name, if provided.
$title = $preferences{'name'} ?
"Welcome back, $preferences{name}!" : "Customizable Page";
# Create the HTML page. We use several of Netscape's
# extended tags to control the background color and the
# font size. It's safe to use Netscape features here because
# cookies don't work anywhere else anyway.
print start_html
(-title
=>$title,
-bgcolor
=>$preferences{'background'},
-text
=>$preferences{'text'}
print basefont
({SIZE
=>$preferences{size
}}) if $preferences{'size'} > 0;
You can change the appearance of this page by submitting
the fill-out form below. If you return to this page any time
within 30 days, your preferences will be restored.
-default=>$preferences{'name'},
td
(popup_menu
(-name
=>'background',
-default=>$preferences{'background'})
td
(popup_menu
(-name
=>'text',
-default=>$preferences{'text'})
td
(popup_menu
(-name
=>'size',
-default=>$preferences{'size'})
submit
(-label
=>'Set preferences'),
print a
({HREF
=>"/"},'Go to the home page');