source: for-distributions/trunk/bin/windows/perl/lib/CGI/eg/cookie.cgi@ 14489

Last change on this file since 14489 was 14489, checked in by oranfry, 17 years ago

upgrading to perl 5.8

File size: 2.2 KB
Line 
1#!/usr/local/bin/perl
2
3use CGI qw(:standard);
4
5@ANIMALS=sort qw/lion tiger bear pig porcupine ferret zebra gnu ostrich
6 emu moa goat weasel yak chicken sheep hyena dodo lounge-lizard
7 squirrel rat mouse hedgehog racoon baboon kangaroo hippopotamus
8 giraffe/;
9
10# Recover the previous animals from the magic cookie.
11# The cookie has been formatted as an associative array
12# mapping animal name to the number of animals.
13%zoo = cookie('animals');
14
15# Recover the new animal(s) from the parameter 'new_animal'
16@new = param('new_animals');
17
18# If the action is 'add', then add new animals to the zoo. Otherwise
19# delete them.
20foreach (@new) {
21 if (param('action') eq 'Add') {
22 $zoo{$_}++;
23 } elsif (param('action') eq 'Delete') {
24 $zoo{$_}-- if $zoo{$_};
25 delete $zoo{$_} unless $zoo{$_};
26 }
27}
28
29# Add new animals to old, and put them in a cookie
30$the_cookie = cookie(-name=>'animals',
31 -value=>\%zoo,
32 -expires=>'+1h');
33
34# Print the header, incorporating the cookie and the expiration date...
35print header(-cookie=>$the_cookie);
36
37# Now we're ready to create our HTML page.
38print start_html('Animal crackers');
39
40print <<EOF;
41<h1>Animal Crackers</h1>
42Choose the animals you want to add to the zoo, and click "add".
43Come back to this page any time within the next hour and the list of
44animals in the zoo will be resurrected. You can even quit Netscape
45completely!
46<p>
47Try adding the same animal several times to the list. Does this
48remind you vaguely of a shopping cart?
49<p>
50<em>This script only works with Netscape browsers</em>
51<p>
52<center>
53<table border>
54<tr><th>Add/Delete<th>Current Contents
55EOF
56 ;
57
58print "<tr><td>",start_form;
59print scrolling_list(-name=>'new_animals',
60 -values=>[@ANIMALS],
61 -multiple=>1,
62 -override=>1,
63 -size=>10),"<br>";
64print submit(-name=>'action',-value=>'Delete'),
65 submit(-name=>'action',-value=>'Add');
66print end_form;
67
68print "<td>";
69if (%zoo) { # make a table
70 print "<ul>\n";
71 foreach (sort keys %zoo) {
72 print "<li>$zoo{$_} $_\n";
73 }
74 print "</ul>\n";
75} else {
76 print "<strong>The zoo is empty.</strong>\n";
77}
78print "</table></center>";
79
80print <<EOF;
81<hr>
82<ADDRESS>Lincoln D. Stein</ADDRESS><BR>
83<A HREF="./">More Examples</A>
84EOF
85 ;
86print end_html;
87
88
Note: See TracBrowser for help on using the repository browser.