{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch13\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe2052{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Thorndale};}
{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f13\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt ??\'a8\'ac?};}{\f38\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@SimSun;}
{\f39\froman\fcharset238\fprq2 Times New Roman CE{\*\falt Thorndale};}{\f40\froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Thorndale};}{\f42\froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Thorndale};}
{\f43\froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Thorndale};}{\f44\froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Thorndale};}{\f45\froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Thorndale};}
{\f46\froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Thorndale};}{\f47\froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Thorndale};}{\f59\fmodern\fcharset238\fprq1 Courier New CE;}{\f60\fmodern\fcharset204\fprq1 Courier New Cyr;}
{\f62\fmodern\fcharset161\fprq1 Courier New Greek;}{\f63\fmodern\fcharset162\fprq1 Courier New Tur;}{\f64\fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f65\fmodern\fcharset178\fprq1 Courier New (Arabic);}
{\f66\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f67\fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f171\fnil\fcharset0\fprq2 SimSun Western{\*\falt ??\'a8\'ac?};}{\f421\fnil\fcharset0\fprq2 @SimSun Western;}}{\colortbl;\red0\green0\blue0;
\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;
\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
\fs24\lang1033\langfe1033\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\*
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\loch\f0\hich\af0\dbch\af13\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{\s15\ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 
\fs24\cf1\lang1033\langfe255\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp255 \snext15 Default;}{\s16\ql \li0\ri0\nowidctlpar\tqc\tx4320\tqr\tx8640\aspalpha\faauto\rin0\lin0\itap0 
\fs24\cf1\lang1033\langfe255\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp255 \sbasedon15 \snext16 header;}{\*\cs17 \additive \fs24\cf1\lang0\langfe255\langnp0\langfenp255 Numbering Symbols;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}
{\*\rsidtbl \rsid7891540\rsid10190240\rsid12465255}{\*\generator Microsoft Word 11.0.6359;}{\info{\title CIS 480 - Perl in Depth - Fall 2004}{\author Sharon Tuttle}{\operator Academic Computing}{\creatim\yr2004\mo11\dy11\hr12\min46}
{\revtim\yr2004\mo11\dy11\hr12\min46}{\printim\yr2004\mo11\dy4\hr10\min48}{\version2}{\edmins18}{\nofpages5}{\nofwords1459}{\nofchars8320}{\*\company CNRS-HSU}{\nofcharsws9760}{\vern24703}}\margt2079 
\deftab1250\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale90\nolnhtadjtbl\rsidroot7891540 \fet0
{\*\ftnsep \pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\loch\af0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 {\insrsid10190240 \chftnsep 
\par }}{\*\ftnsepc \pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\loch\af0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 {\insrsid10190240 \chftnsepc 
\par }}{\*\aftnsep \pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\loch\af0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 {\insrsid10190240 \chftnsep 
\par }}{\*\aftnsepc \pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\loch\af0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp1033 {\insrsid10190240 \chftnsepc 
\par }}\sectd \sbknone\linex0\headery1440\sectdefaultcl\sftnbj {\header \pard\plain \s16\ql \li0\ri0\nowidctlpar\tqc\tx4320\tqr\tx8640\aspalpha\faauto\rin0\lin0\itap0 \fs24\cf1\lang1033\langfe255\loch\af0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp255 {
\fs16\insrsid10190240 \hich\af0\dbch\af13\loch\f0 CIS 480 -  Homework #10 and Week 12 Lab Exercise \tab \tab p. }{\field{\*\fldinst {\fs16\insrsid10190240 \\\hich\af0\dbch\af13\loch\f0 page}}{\fldrslt {\fs16\lang1024\langfe1024\noproof\insrsid12465255 
\hich\af0\dbch\af13\loch\f0 3}}}{\insrsid10190240 
\par }{\fs16\insrsid10190240 \hich\af0\dbch\af13\loch\f0 Fall 2004
\par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}
{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8
\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \s15\qc \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 
\fs24\cf1\lang1033\langfe255\loch\af0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp255 {\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 CIS 480 - Perl in Depth - Fall 2004
\par }\pard \s15\qc \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0\pararsid10190240 {\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 WEEK 12 LAB EXERCISE and Homework #10 \hich\f0 \endash \loch\f0  }{\b\fs22\ul\insrsid10190240\charrsid10190240 
\hich\af0\dbch\af13\loch\f0 SLIGHTLY REVISED}{\b\fs22\ul\insrsid12465255 \hich\af0\dbch\af13\loch\f0  #2}{\b\fs22\insrsid10190240 
\par }\pard \s15\qc \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\b\fs22\insrsid10190240 
\par \hich\af0\dbch\af13\loch\f0 Week 12 lab exercise due: Thursday,  November 11th, END of lab
\par }\pard \s15\qc \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 HW #10 due: Thursday, November 18th, 12:00 noon
\par }\pard \s15\ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 ---------------------------------------------------\hich\af0\dbch\af13\loch\f0 ------------------------------------------------------

\par }{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 For EACH of the scripts below (lab exercise AND homework), you are required to begin EACH with the following:
\par }{\fs20\insrsid10190240 
\par }{\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2 #!/usr/bin/perl -w
\par \hich\af0\dbch\af0\loch\f2 ###480-author: }{\i\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2 yourLastName}{\fs20\loch\af2\insrsid10190240 
\par }{\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2 ###480-scriptname: }{\i\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2 yourScriptName}{\fs20\loch\af2\insrsid10190240 
\par }{\i\fs20\loch\af2\insrsid10190240 
\par }{\i\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2 (}{\i\fs28\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2 THEN}{\i\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2  an\hich\af0\dbch\af0\loch\f2  }{
\i\fs20\ul\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2 opening comment block }{\i\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2 
containing the NAME of the script file, your name, the date, and a brief description of the purpose of this script)
\par 
\par }{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 Note that the spacing and header need to be exact --- I hope to develop a Perl script to process these in some interesting and useful fashion. More on that as it develops.
\par }{\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 ------------------------------------------------------------------------------------\hich\af0\dbch\af13\loch\f0 --------------------
\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\b\fs22\ul\insrsid10190240 \hich\af0\dbch\af13\loch\f0 WEEK 12 LAB EXERCISE
\par }\pard \s15\ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\b\fs22\insrsid10190240 
\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 Latest HTML::Template status: }{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 
I'm told that the module is installed; I still haven't been able to successfully access it. I'm still making inquiries --- maybe next week?}{\b\fs22\insrsid10190240 
\par \hich\af0\dbch\af13\loch\f0 Latest MySQL status: }{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 We have accounts! Now I'm working on the Perl connection string. Still working on that, too --- maybe next week?}{\b\fs22\insrsid10190240 
\par 
\par \hich\af0\dbch\af13\loch\f0 1.\tab }{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 So, where do we start today? Seeing if everyone's ORACLE account is up and running!}{\b\fs22\insrsid10190240 
\par }{\insrsid10190240 
\par }\pard \s15\ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 *\tab I know how to connect perl to Oracle 8 --- I don't k\hich\af0\dbch\af13\loch\f0 
now yet if we're going to have problems with those of you who've changed your redwood world to connect to Oracle 9 instead.
\par 
\par \hich\af0\dbch\af13\loch\f0 *\tab FIRST: if you have NEVER had an Oracle account, you do now. Your Oracle username is your axe/redwood/sorrel username; that, curre\hich\af0\dbch\af13\loch\f0 
ntly, is its password as well. (As part of reviewing your lab exercise, I'll help you to change this password duing lab today.)
\par 
\par \hich\af0\dbch\af13\loch\f0 *\tab Use }{\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 lab12_table_setup.pl}{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 
 (available from the course web page) to set up the three example tables for this lab exercise and ho\hich\af0\dbch\af13\loch\f0 mework.
\par }\pard \s15\ql \fi-420\li1260\ri0\nowidctlpar\aspalpha\faauto\rin0\lin1260\itap0 {\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 *\tab Note that this can be re-run anytime you want to "clear" these tables and start with clean, empty copies.
\par }\pard \s15\ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {\b\fs22\insrsid10190240 
\par }{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 *\tab OPTIONAL: the source for }{\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 lab12_table_setup.pl}{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 
 is available from the course web page, too. If you'd like to add additional attributes or t\hich\af0\dbch\af13\loch\f0 ables, you may.}{\b\fs22\insrsid10190240 
\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\b\fs22\insrsid10190240 
\par \hich\af0\dbch\af13\loch\f0 2.\tab }{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 If you completed #1, then you must be able to connect to your Oracle account, and you have 3 tables:}{\b\fs22\insrsid10190240 
\par 
\par \tab \hich\af0\dbch\af13\loch\f0 book(BOOK_ID, book_author_lname, book_title, book_type)
\par \tab \hich\af0\dbch\af13\loch\f0 reviewer(REVIEWER_ID, reviewer_lname, reviewer_email)
\par \tab \hich\af0\dbch\af13\loch\f0 review(REVIEW_ID, boo\hich\af0\dbch\af13\loch\f0 k_id, reviewer_id, review_date, review_rating, 
\par \tab \tab \hich\af0\dbch\af13\loch\f0 review_text)
\par \hich\af0\dbch\af13\loch\f0  \tab \tab foreign key (book_id) references book,
\par \hich\af0\dbch\af13\loch\f0                        foreign key (reviewer_id) references reviewer
\par 
\par \tab }{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 These are intended to represent a little book mini-review scenario, where review\hich\af0\dbch\af13\loch\f0 ers give mini-reviews of books. Here are some more details that I think you'll need:}{
\b\fs22\insrsid10190240 
\par 
\par }\pard \s15\ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 *\tab the book_id is declared to be a string of exactly length 5; the intent is that these be strings of digits.
\par \hich\af0\dbch\af13\loch\f0 *\tab only th\hich\af0\dbch\af13\loch\f0 e primary author of each book is included; that last name of that author is stored, and can be up to 20 characters long.
\par \hich\af0\dbch\af13\loch\f0 *\tab the book's title can be up to 50 characters long.
\par \hich\af0\dbch\af13\loch\f0 *\tab the book can have its primary category/type stored; this type can be up to 15 cha\hich\af0\dbch\af13\loch\f0 racters long.
\par 
\par \hich\af0\dbch\af13\loch\f0 *\tab the reviewer_id is declared to be a string of exactly length 3; the intent is that these be strings of digits.
\par \hich\af0\dbch\af13\loch\f0 *\tab only the reviewer's last name is included, and can be up to 20 characters long.
\par \hich\af0\dbch\af13\loch\f0 *\tab and, the reviewer's e-mail address can be up\hich\af0\dbch\af13\loch\f0  to 30 characters long.
\par 
\par \hich\af0\dbch\af13\loch\f0 *\tab the review_id is declared to be a string of exactly length 4; the intent is that these be strings of digits.
\par \hich\af0\dbch\af13\loch\f0 *\tab the review_date is an Oracle date --- an Oracle date literal is written in SINGLE quotes, as 'DD-Mon-YYYY' --- that is\hich\af0\dbch\af13\loch\f0 , the lab was posted on '11-Nov-2004' .
\par \hich\af0\dbch\af13\loch\f0 *\tab the review_rating is declared to be an integer between 1 and 5. You can decide what each of those values "means".
\par \hich\af0\dbch\af13\loch\f0 *\tab the review_text is meant to be a mini, capsule review. So, it can only be up to 30 characters long\hich\af0\dbch\af13\loch\f0 .
\par 
\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\fs22\insrsid10190240 \tab \hich\af0\dbch\af13\loch\f0 
Whew! And, if you do not like some of these, you may make them more "generous" by modifying lab12_table_setup.pl accordingly. (You may not make any of them "smaller", however...)
\par 
\par \tab \hich\af0\dbch\af13\loch\f0 Note that, posted on the course web page, there is a script}{\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0  lab12_inser\hich\af0\dbch\af13\loch\f0 t_reviewer.pl}{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 
 that allows a reviewer to be inserted into the reviewer table. (This is quite rudimentary; you may "ritz it up", if you like, but that is not a requirement.)}{\b\fs22\insrsid10190240 
\par 
\par \tab }{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 Write a script}{\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0  lab12_insert_book.pl }{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 that:
\par }\pard \s15\ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 *\tab includes YOUR NAME somewhere in the re\hich\af0\dbch\af13\loch\f0 sulting page or window title,{\*\bkmkstart DDE_LINK2}
{\*\bkmkend DDE_LINK2}
\par \hich\af0\dbch\af13\loch\f0 *\tab has text and textfield for the user to enter an Oracle name,
\par \hich\af0\dbch\af13\loch\f0 *\tab has text and password field for the user to enter an Oracle password,
\par }\pard \s15\ql \fi-420\li840\ri0\nowidctlpar\tx855\aspalpha\faauto\rin0\lin840\itap0 {\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 *\tab has text and textfield for the user to ente}{\fs22\insrsid7891540 \hich\af0\dbch\af13\loch\f0 
r a book_id that cannot exce\hich\af0\dbch\af13\loch\f0 ed 5}{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0  characters.
\par \hich\af0\dbch\af13\loch\f0 *\tab has text and textfield for the user to enter an author's last name that cannot exceed 20 characters.
\par \hich\af0\dbch\af13\loch\f0 *\tab has text and textfield for the user to enter a book title that cannot exceed 50}{\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0  }{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 characters.
\par \hich\af0\dbch\af13\loch\f0 *\tab \hich\af0\dbch\af13\loch\f0 has text and textfield for the user to enter a book type that cannot exceed 15 characters.
\par }{\b\fs22\insrsid10190240 
\par }{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 *\tab has a submit button that tries to insert a new book row with the given attributes:
\par }\pard \s15\ql \fi-420\li1275\ri0\nowidctlpar\tx1290\aspalpha\faauto\rin0\lin1275\itap0 {\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 *\tab it should FAIL if any of the values are not filled in;
\par 
\par \hich\af0\dbch\af13\loch\f0 *\tab it should print the\hich\af0\dbch\af13\loch\f0  new resulting version of the book table to the screen, underneath the book-entry parts.
\par }{\b\fs22\insrsid10190240 
\par }\pard \s15\ql \fi-435\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 3.\tab }{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 Updating your}{\b\fs22\insrsid10190240 
\hich\af0\dbch\af13\loch\f0  480perl.html }{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 page as follows below is the last part of today's lab exercise. Remember to put these new items at the top.
\par }{\b\fs22\insrsid10190240 
\par \tab }{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 So, add the following segm\hich\af0\dbch\af13\loch\f0 ent of code BEFORE the HW #9 section (and directly after the first }{\f2\fs20\insrsid10190240 \hich\af2\dbch\af13\loch\f2 <ul>}{
\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 ), }{\b\fs22\ul\insrsid10190240 \hich\af0\dbch\af13\loch\f0 REPLACING XXX with YOUR sorrel username!!!}{\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 :
\par 
\par }{\b\fs20\loch\af2\insrsid10190240 \tab }{\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2 <li> HW #10
\par \tab \hich\af0\dbch\af0\loch\f2      <ul>
\par \tab \hich\af0\dbch\af0\loch\f2      <li> <a href=
\par \hich\af0\dbch\af0\loch\f2  "http://sorrel.humboldt.edu/cgi-bin/cgiwrap}{\b\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2 /XXX/}{\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2 hw10_insert_review.pl">    
\par \hich\af0\dbch\af0\loch\f2  \tab \hich\af0\dbch\af0\loch\f2           hw10_insert_review </a>
\par \tab \hich\af0\dbch\af0\loch\f2      <li> <a href=
\par \hich\af0\dbch\af0\loch\f2  "http://sorrel.humboldt.edu/cgi-bin/cgiwrap/}{\b\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2 XXX}{\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2 /hw10_see_reviews.pl">    
\par \hich\af0\dbch\af0\loch\f2  \tab           hw10_see_reviews </a>
\par \hich\af0\dbch\af0\loch\f2  \tab      </ul>
\par \tab \hich\af0\dbch\af0\loch\f2 <br>
\par 
\par }{\fs22\insrsid10190240 \tab }{\f2\fs20\insrsid10190240 \hich\af2\dbch\af13\loch\f2 <li> Week 12 Lab Exercise}{\fs22\insrsid10190240 
\par }{\f2\fs20\insrsid10190240 \hich\af2\dbch\af13\loch\f2         <ul>}{\insrsid10190240 
\par }{\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2         <li> <a href=
\par }{\fs20\loch\af2\dbch\af0\insrsid12465255 \hich\af0\dbch\af0\loch\f2  }{\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2 "http://sorrel.humboldt.edu/cgi}{\fs20\loch\af2\dbch\af0\insrsid12465255 \hich\af0\dbch\af0\loch\f2 -}{
\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2 bin/cgiwrap/st10/lab12_table_setup.pl">    
\par \tab \hich\af0\dbch\af0\loch\f2           lab12_table_setup </a>
\par }{\b\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2               <!-- put in YOUR userid if make your OWN version! -->
\par 
\par \hich\af0\dbch\af0\loch\f2         }{\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2 <li> <a href=
\par }{\fs18\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2     "http://sorrel.humboldt.edu/cgi}{\fs18\loch\af2\dbch\af0\insrsid12465255 \hich\af0\dbch\af0\loch\f2 -}{\fs18\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2 
bin/cgiwrap/st10/la\hich\af0\dbch\af0\loch\f2 b12_insert_reviewer.pl"> }{\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2    
\par \tab \hich\af0\dbch\af0\loch\f2           lab12_insert_reviewer </a>
\par }{\b\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2               <!-- put in YOUR userid if make your OWN version! -->
\par 
\par \hich\af0\dbch\af0\loch\f2         }{\b\fs20\loch\af2\dbch\af0\insrsid12465255 \hich\af0\dbch\af0\loch\f2 <li>}{\b\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2  }{\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2 
<a href=
\par \hich\af0\dbch\af0\loch\f2   "http://sorrel.humboldt.edu/cgi-bin/cgiwrap}{\b\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2 /XXX/}{\fs20\loch\af2\dbch\af0\insrsid10190240 \hich\af0\dbch\af0\loch\f2 lab12_insert_book.pl">    
\par \hich\af0\dbch\af0\loch\f2  \tab           lab12_ins\hich\af0\dbch\af0\loch\f2 ert_book </a>
\par \hich\af0\dbch\af0\loch\f2    \tab     </ul>
\par \tab \hich\af0\dbch\af0\loch\f2 <br>
\par }\pard \s15\ql \fi-420\li1275\ri0\nowidctlpar\aspalpha\faauto\rin0\lin1275\itap0 {\b\fs22\insrsid10190240 
\par }\pard \s15\ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 
When you believe you are done with the above, add your name to the "NEXT" list on the board. When it is your turn, I will come and run various tests starting from your name link on the page http://www.humboldt.edu/~st10/f\hich\af0\dbch\af13\loch\f0 
04cis480perl/480student_pages.html. 
\par \hich\af0\dbch\af13\loch\f0 (and, OK --- there's now a link to this from the course web page, in the "Other Course Links" section. Note that I will remove this link if anyone in class objects, however.)
\par 
\par \hich\af0\dbch\af13\loch\f0 If, by the end of lab, you have completed t\hich\af0\dbch\af13\loch\f0 he above and passed the tests, then you will have met the requirements for this lab exercise. 
\par }\pard \s15\ql \fi-420\li1275\ri0\nowidctlpar\tx1290\aspalpha\faauto\rin0\lin1275\itap0 {\b\fs22\insrsid10190240 
\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\b\fs22\ul\insrsid10190240 \hich\af0\dbch\af13\loch\f0 HOMEWORK #10
\par 
\par }{\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 1.\tab }{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 Now that reviewers and books can be inserted, it is time to make a page to allow book mini-reviews to be added. Write a script }{
\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 hw10_insert_revi\hich\af0\dbch\af13\loch\f0 ew.pl}{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0  that:}{\b\fs22\insrsid10190240 
\par 
\par }\pard \s15\ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 *\tab includes YOUR NAME somewhere in the resulting page or window title,
\par \hich\af0\dbch\af13\loch\f0 *\tab has a place for the user to enter their Oracle name and Oracle password,
\par 
\par \hich\af0\dbch\af13\loch\f0 *\tab allows the user to (CHOOSE ONE of the following to implement):
\par }\pard \s15\ql \fi-420\li1275\ri0\nowidctlpar\aspalpha\faauto\rin0\lin1275\itap0 {\fs22\insrsid7891540 \hich\af0\dbch\af13\loch\f0 *\tab enter a 5}{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 -digit book_id, OR
\par \hich\af0\dbch\af13\loch\f0 *\tab \hich\af0\dbch\af13\loch\f0 select a book title from a suitable GUI component.
\par 
\par \hich\af0\dbch\af13\loch\f0 (I am }{\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 not}{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 
 saying that your script must give the user a choice --- I am saying that you can choose which approach you want to take. This is to allow those with more SQL/HTML experience to do more, IF THEY \hich\af0\dbch\af13\loch\f0 WISH.)
\par 
\par }\pard \s15\ql \fi-420\li855\ri0\nowidctlpar\aspalpha\faauto\rin0\lin855\itap0 {\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 *\tab 
allows the user to enter their reviewer_id (which is as close as we are getting to security here... the reviewers are expected to know their id's...! Yes, this IS wimpy. Make it fancier IF YOU WISH.)
\par 
\par \hich\af0\dbch\af13\loch\f0 *\tab has a radio group of 5 radio buttons, label\hich\af0\dbch\af13\loch\f0 ed appropriately; the user's choice should become their review_rating for this review.
\par 
\par \hich\af0\dbch\af13\loch\f0 *\tab allows user to enter their mini-review (up to 30 characters).
\par 
\par \hich\af0\dbch\af13\loch\f0 *\tab has a submit button that tries to insert the new review with appropriate values given what the user h\hich\af0\dbch\af13\loch\f0 as entered.
\par }\pard \s15\ql \fi-420\li1275\ri0\nowidctlpar\tx1290\aspalpha\faauto\rin0\lin1275\itap0 {\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 *\tab it should FAIL if any of the values are not filled in;
\par 
\par \hich\af0\dbch\af13\loch\f0 *\tab it should print the new resulting version of the review table to the screen, underneath the book-entry parts.
\par 
\par }\pard \s15\ql \fi-420\li405\ri0\nowidctlpar\tx420\aspalpha\faauto\rin0\lin405\itap0 {\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 2.}{\fs22\insrsid10190240 \tab \hich\af0\dbch\af13\loch\f0 
Now, someone should be able to SEE the reviews for some book, hmm? Wri\hich\af0\dbch\af13\loch\f0 te a script }{\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 hw10_see_reviews.pl}{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0  that:
\par 
\par }\pard \s15\ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 *\tab includes YOUR NAME somewhere in the resulting page or window title,
\par }\pard \s15\ql \fi-420\li840\ri0\nowidctlpar\tx855\aspalpha\faauto\rin0\lin840\itap0 {\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 *\tab has a place for the user to enter their Oracle name and Oracle password,
\par 
\par \hich\af0\dbch\af13\loch\f0 *\tab allows the user to type in a book title, 
\par \hich\af0\dbch\af13\loch\f0 *  \tab \hich\af0\dbch\af13\loch\f0 allows the user to type in an author last name,
\par \hich\af0\dbch\af13\loch\f0 *\tab allows the user to type in a book category,
\par 
\par \hich\af0\dbch\af13\loch\f0 *\tab has a submit button that tries to show all of the reviews for that book and/or for books written by that author and/or for books with that category/type in som\hich\af0\dbch\af13\loch\f0 e reasonably readable way.
\par 
\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\tx435\aspalpha\faauto\rin0\lin420\itap0 {\fs22\insrsid10190240 \tab \hich\af0\dbch\af13\loch\f0 You may use a DIFFERENT, "friendlier" components }{\fs22\ul\insrsid10190240 \hich\af0\dbch\af13\loch\f0 if}{
\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0  you would like for allowing the user to indicate book_title, author last name, and book category; but that is your option.
\par }\pard \s15\ql \fi-420\li840\ri0\nowidctlpar\tx855\aspalpha\faauto\rin0\lin840\itap0 {\fs22\insrsid10190240 
\par }\pard \s15\ql \fi-15\li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 When you are done, make sure that the }{\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 hw10_insert_r
\hich\af0\dbch\af13\loch\f0 eview}{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0  and }{\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 hw10_see_reviews}{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0  links from }{\b\fs22\insrsid10190240 
\hich\af0\dbch\af13\loch\f0 480perl.html}{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0  do indeed successfully run those respective scripts. Make sure that }{\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 hw10_insert_review.pl}{
\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0  and }{\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 hw10_see_reviews.pl}{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0  are NOT world-readable (711 should make it executable but not readable.) 

\par }\pard \s15\ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\fs22\insrsid10190240 
\par \hich\af0\dbch\af13\loch\f0 And, read  }{\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 hw10_\hich\af0\dbch\af13\loch\f0 insert_review.pl}{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0  and }{\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 
hw10_see_reviews.pl}{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0   into an e-mail message with the Subject }{\b\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 480 hw 10}{\fs22\insrsid10190240 \hich\af0\dbch\af13\loch\f0 
, and e-mail it, NOT as an attachment, to st10@humboldt.edu by the due date and time given above. [IF you wrote your OWN table set-up or book insertion scripts, send\hich\af0\dbch\af13\loch\f0 
 them, also, so that I will be able to RUN your versions of the required scripts!!]
\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\fs22\insrsid10190240 
\par }\pard \s15\ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\fs22\insrsid10190240 
\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\fs20\insrsid10190240 
\par }}