Next: Offline Execution
Up: Project 2 Description
Previous: Processing an Order
- Name the script cart.cgi.
- Use the module CGI.pm (
use CGI qw(:standard);
).
- Include the pragma strict (
use strict;
).
- Use the module CGI::Carp.pm (
use CGI::Carp qw(fatalsToBrowser);
)
- Do not forget to call the appropriate
start_*
and
end_*
when starting/ending an HTML page or form.
- You may assume the initial data files are error free. I will
e-mail the class when sample data files are made available on the
course web page (
http://www.cs.rpi.edu/~ziantzl/perl.html
).
- Assume any username entered by the user does not already exist.
- You will need to lock catalog.dat for
concurrent read (no write) when you read it for input.
- You will need to lock orders.dat for
exclusive write (no read) when you write to it.
- If you do the bonus part, append the string
"-- Bonus"
in the <TITLE>
and <H1>
heading of the generated form.
- Make sure you display an HTML error message whenever there is
an error that you can trap (for example, if a file can't be opened
or locked). You can use the
&bail()
subroutine I gave in
class or make one of your own.
- Make use of subroutines. The generation and processing of the
form should be separate subroutines. The form processing subroutine
should call several subroutines. Other activities, such as reading
the catalog file and generating the different HTML error pages are
all candidates for separate subroutines.
- Keep the use of global variables to a minimum. Global
``constants'' such as filenames are fine. It is acceptable to
make the product data structures global (but you should at least
experiment with passing a hash or an array by reference, since it
may be on the exam).
Next: Offline Execution
Up: Project 2 Description
Previous: Processing an Order
Louis Ziantz
4/23/1998