#!/usr/local/bin/perl
use CGI qw(:standard);
@ANIMALS=sort qw/lion tiger bear pig porcupine ferret zebra gnu ostrich
emu moa goat weasel yak chicken sheep hyena dodo lounge-lizard
squirrel rat mouse hedgehog racoon baboon kangaroo hippopotamus
giraffe/;
# Recover the previous animals from the magic cookie.
# The cookie has been formatted as an associative array
# mapping animal name to the number of animals.
%zoo = cookie('animals');
# Recover the new animal(s) from the parameter 'new_animal'
@new = param('new_animals');
# If the action is 'add', then add new animals to the zoo. Otherwise
# delete them.
foreach (@new) {
if (param('action') eq 'Add') {
$zoo{$_}++;
} elsif (param('action') eq 'Delete') {
$zoo{$_}-- if $zoo{$_};
delete $zoo{$_} unless $zoo{$_};
}
}
# Add new animals to old, and put them in a cookie
$the_cookie = cookie(-name=>'animals',
-value=>\%zoo,
-expires=>'+1h');
# Print the header, incorporating the cookie and the expiration date...
print header(-cookie=>$the_cookie);
# Now we're ready to create our HTML page.
print start_html('Animal crackers');
print <
Try adding the same animal several times to the list. Does this
remind you vaguely of a shopping cart?
This script only works with Netscape browsers
Add/Delete Current Contents
EOF
;
print " ",start_form;
print scrolling_list(-name=>'new_animals',
-values=>[@ANIMALS],
-multiple=>1,
-override=>1,
-size=>10),"
";
print submit(-name=>'action',-value=>'Delete'),
submit(-name=>'action',-value=>'Add');
print end_form;
print "";
if (%zoo) { # make a table
print " \n";
foreach (sort keys %zoo) {
print "
\n";
} else {
print "The zoo is empty.\n";
}
print "
More Examples
EOF
;
print end_html;