#!/usr/bin/perl -w
# conelec1.pl
# This CGI program processes the consumer electronics survey
# form and updates the file that stores the survey
use CGI ":standard";
# error Ð a function to produce an error message for the client
# and exit in case of open errors
sub error {
print "Error Ðfile could not be opened in conelec1.pl
";
print end_html();
exit(1);
}
# Begin main program
# Get the form values
my($age, $gender, $vote) = (param("age"), param("gender"),
param("vote"));
# Produce the header for the reply page - do it here so
# error messages appear on the page
print header();
# Set names for file locking and unlocking
$LOCK = 2;
$UNLOCK = 8;
# Set $index to the line index of the current vote
$index = 0;
if ($gender eq "male") {
$index = 4;
}
if ($age eq "b2640") { $index += 1 }
elsif ($age eq "b4160") { $index += 2 }
elsif ($age eq "o60") { $index += 3 }
# Open and lock the survey data file
open(SURVDAT, ");
}
flock(SURVDAT, $UNLOCK);
close(SURVDAT);
# Split the line into its parts, increment the chosen
# device, and put it back together again
@file_votes = split / /, $file_lines[$index];
$file_votes[$vote]++;
$file_lines[$index] = join(" ", @file_votes);
# Reopen the survey data file for writing and lock it
open(SURVDAT, ">survdat.dat") or error();
flock(SURVDAT, $LOCK);
# Write out the file data, unlock the file, and close it
for ($count = 0; $count <= 7; $count++) {
$line = $file_lines[$count];
print SURVDAT "$line\n";
}
flock(SURVDAT, $UNLOCK);
close(SURVDAT);
# Build the Web page to thank the survey participant
print start_html("Thankyou");
print "Thanks for participating in our survey
\n";
print end_html();
exit;