poll.html
Poll number 1.
1
2
3
4
5
6
7
8
9
10
View Results
poll.cgi #!i:/perl/bin/perl use CGI qw(:standard); use CGI::Carp qw(warningsToBrowser fatalsToBrowser); use strict; use Fcntl qw(:flock :seek); my $outfile = "poll.out"; if (param('pick')) { open(OUT, ">>$outfile") or &dienice("Couldn't open $outfile: $!"); flock(OUT, LOCK_EX); # set an exclusive lock seek(OUT, 0, SEEK_END); # then seek the end of file print OUT param('pick'),"\n"; close(OUT); } else { &dienice("You didn't pick anything!"); } print redirect"results.cgi"; sub dienice { my($msg) = @_; print header; print start_html("Error"); print h2("Error"); print $msg; print end_html; exit; } results.cgi #!i:/perl/bin/perl use CGI qw(:standard); use CGI::Carp qw(warningsToBrowser fatalsToBrowser); use Fcntl qw(:flock :seek); my $outfile = "poll.out"; print header; print start_html("Results"); open(IN, "$outfile") or &dienice("Couldn't open $outfile: $!"); flock(IN, LOCK_SH); seek(IN, 0, SEEK_SET); my($total_votes, $results); foreach my $i ("10", "1", "2", "3", "4", "5", "6", "7", "8", "9") {$results{$i} = 0;} while (my $rec = ) { chomp($rec); $total_votes = $total_votes + 1; $results{$rec} = $results{$rec} + 1; } close(IN); print <Poll number 1
1 $results{10} votes
2 $results{1} votes
3 $results{2} votes
4 $results{3} votes
5 $results{4} votes
6 $results{5} votes
7 $results{6} votes
8 $results{7} votes
9 $results{8} votes
10 $results{9} votes

$total_votes votes total

END print end_html; sub dienice { my($msg) = @_; print h2("Error"); print $msg; print end_html; exit; }