#!/usr/bin/perl -wT use CGI qw(:standard); use CGI::Carp qw(warningsToBrowser fatalsToBrowser); use strict; use Fcntl qw(:flock :seek); my $outfile = "poll.out"; # if they didn't pick anything, don't record the vote if (param('pick')) { open(OUT, ">>$outfile") or &dienice("Couldn't open $outfile: $!"); # set an exclusive lock flock(OUT, LOCK_EX); # then seek the end of the file seek(OUT, 0, SEEK_END); print OUT param('pick'),"\n"; close(OUT); } else { # this is optional, but if they didn't vote, you might want to tell # them about it... &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; }