{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Thorndale};}{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}
{\f29\fswiss\fcharset128\fprq2{\*\panose 020b0604020202020204}Arial Unicode MS;}{\f30\fswiss\fcharset128\fprq2 @Arial Unicode MS;}{\f31\froman\fcharset238\fprq2 Times New Roman CE{\*\falt Thorndale};}
{\f32\froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Thorndale};}{\f34\froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Thorndale};}{\f35\froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Thorndale};}
{\f36\froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Thorndale};}{\f37\froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Thorndale};}{\f38\froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Thorndale};}
{\f47\fmodern\fcharset238\fprq1 Courier New CE;}{\f48\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f50\fmodern\fcharset161\fprq1 Courier New Greek;}{\f51\fmodern\fcharset162\fprq1 Courier New Tur;}{\f52\fmodern\fcharset177\fprq1 Courier New (Hebrew);}
{\f53\fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f54\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f265\fswiss\fcharset0\fprq2 Arial Unicode MS Western;}{\f263\fswiss\fcharset238\fprq2 Arial Unicode MS CE;}
{\f264\fswiss\fcharset204\fprq2 Arial Unicode MS Cyr;}{\f266\fswiss\fcharset161\fprq2 Arial Unicode MS Greek;}{\f267\fswiss\fcharset162\fprq2 Arial Unicode MS Tur;}{\f268\fswiss\fcharset177\fprq2 Arial Unicode MS (Hebrew);}
{\f269\fswiss\fcharset178\fprq2 Arial Unicode MS (Arabic);}{\f270\fswiss\fcharset186\fprq2 Arial Unicode MS Baltic;}{\f273\fswiss\fcharset0\fprq2 @Arial Unicode MS Western;}{\f271\fswiss\fcharset238\fprq2 @Arial Unicode MS CE;}
{\f272\fswiss\fcharset204\fprq2 @Arial Unicode MS Cyr;}{\f274\fswiss\fcharset161\fprq2 @Arial Unicode MS Greek;}{\f275\fswiss\fcharset162\fprq2 @Arial Unicode MS Tur;}{\f276\fswiss\fcharset177\fprq2 @Arial Unicode MS (Hebrew);}
{\f277\fswiss\fcharset178\fprq2 @Arial Unicode MS (Arabic);}{\f278\fswiss\fcharset186\fprq2 @Arial Unicode MS Baltic;}}{\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\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{
\s15\ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 \snext15 Default;}{\s16\ql \li0\ri0\nowidctlpar\tqc\tx4320\tqr\tx8640\aspalpha\faauto\rin0\lin0\itap0 
\fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 \sbasedon15 \snext16 header;}{\*\cs17 \additive \fs24\cf1\lang0\langfe255\langfenp255 Numbering Symbols;}}{\info{\author Sharon Tuttle}{\operator CNRS}{\creatim\yr2004\mo8\dy2\hr14\min32}
{\revtim\yr2004\mo11\dy18\hr11\min49}{\printim\yr2004\mo11\dy11\hr11\min52}{\version3}{\edmins3}{\nofpages5}{\nofwords1352}{\nofchars7709}{\*\company CNRS-HSU}{\nofcharsws9467}{\vern8269}}\margt2093 
\deftab1250\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale90\nolnhtadjtbl \fet0\sectd 
\sbknone\linex0\headery1440\sectdefaultcl {\header \pard\plain \s16\ql \li0\ri0\nowidctlpar\tqc\tx4320\tqr\tx8640\aspalpha\faauto\rin0\lin0\itap0 \fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\fs16 
CIS 480 -  Homework #11 and Week 13 Lab Exercise \tab \tab p. }{\field{\*\fldinst {\fs16 \\page}}{\fldrslt {\fs16\lang1024\langfe1024\noproof 5}}}{
\par }{\fs16 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\cgrid\langnp1033\langfenp255 {\b\fs22 CIS 480 - Perl in Depth - Fall 2004
\par WEEK 13 LAB EXERCISE and Homework #11
\par 
\par Week 13 lab exercise due: Thursday,  November 18th, END of lab
\par }\pard \s15\qc \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\b\fs22 HW #10 due: Thursday, December 2nd, 12:00 noon
\par }\pard \s15\ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\b\fs22 ---------------------------------------------------------------------------------------------------------
\par }{\fs22 For EACH of the scripts below (lab exercise AND homework), you are required to begin EACH with the following:
\par }{\fs20 
\par }{\fs20\loch\af2 \hich\af0\dbch\af0\loch\f2 #!/usr/bin/perl -w
\par \hich\af0\dbch\af0\loch\f2 ###480-author: }{\i\fs20\loch\af2 \hich\af0\dbch\af0\loch\f2 yourLastName}{\fs20\loch\af2 
\par \hich\af0\dbch\af0\loch\f2 ###480-scriptname:\hich\af0\dbch\af0\loch\f2  }{\i\fs20\loch\af2 \hich\af0\dbch\af0\loch\f2 yourScriptName}{\fs20\loch\af2 
\par }{\i\fs20\loch\af2 
\par \hich\af0\dbch\af0\loch\f2 (}{\i\fs28\loch\af2 \hich\af0\dbch\af0\loch\f2 THEN}{\i\fs20\loch\af2 \hich\af0\dbch\af0\loch\f2  an }{\i\fs20\ul\loch\af2 \hich\af0\dbch\af0\loch\f2 opening comment block }{\i\fs20\loch\af2 \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 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 --------------------------------------------------------------------------------------------------------
\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\b\fs22\ul WEEK 13 LAB EXERCISE
\par }\pard \s15\ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\b\fs22 
\par }\pard \s15\ql \li15\ri0\nowidctlpar\aspalpha\faauto\rin0\lin15\itap0 {\fs22 Let's see if you can either access my directory's HTML::TEMPLATE module, or if you can install your own, and let's make sure you can run a "home-grown" module.
\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\fs22 
\par }{\b\fs22 1.\tab }{\fs22 As a path of least resistance, let's see if you can simply use the copy the copy of HTML::Template installed at /home/faculty/st10/perllib on sorrel.}{\b\fs22 
\par 
\par \tab }{\fs22 You can see, from the course web page, lect13_template1.tpl and lect13_template1.pl. 
\par 
\par \tab From lect13_template1.tpl, create }{\b\fs22 lab13_template1.tpl}{\fs22 . It must also (in addition to what lect13_template1.tpl already did):
\par }\pard \s15\ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {\fs22 *\tab contain YOUR NAME in a way that will be visible WITHIN the HTML page when this is displayed;
\par 
\par *\tab add an additional <TMPL_*> tag of your choice.
\par 
\par From lect13_template1.pl, create }{\b\fs22 lab13_template1.pl}{\fs22 . It must also (in addition to what lect13_template1.pl already did):
\par *\tab fill in the additional <TMPL_*> tag that you added to lab13_template1.tpl.
\par }{\b\fs22 
\par }{\fs22 *\tab hopefully, the lib pragma already there will work --- OTHERWISE, you will need to try your hand at installing HTML::Template in your sorrel directory, and changing the lib pragma here to then add the directory where you place this.}{\b\fs22 

\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\b\fs22 
\par 2.\tab }{\fs22 And, let's make sure that you can run a custom-written module that you write and place somewhere "locally". You can find MyFirstModule.pm and lect13_try_module1 on the course web page, also.}{\b\fs22 
\par 
\par \tab }{\fs22 Create a perl library directory somewhere on your sorrel account. 
\par 
\par \tab Within your perl library directory, from MyFirstModule1.pm, create }{\b\fs22 FirstLabModule.pm}{\fs22  It must:
\par }\pard \s15\ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {\fs22 *\tab modify first_sub, second_sub, and third_sub to also include YOUR NAME in the string that they print out when called.
\par 
\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\fs22 \tab Then, using lect13_try_module1 for module calling assistance (note that it is NOT a CGI script), create a simple CGI script }{\b\fs22 lab13_try_module1.pl}{\fs22 
 that:
\par }\pard \s15\ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {\fs22 *\tab includes YOUR NAME visibly in the resulting web page, and
\par  
\par *\tab calls the three subroutines in such a way that their results will be displayed on the resulting web page.
\par }\pard \s15\ql \fi-435\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\b\fs22 
\par 3.\tab }{\fs22 Updating your 480perl.html page as follows below is the last part of today's lab exercise. Remember to put these new items at the top.
\par 
\par \tab So, add the following segment of code BEFORE the HW #10 section (and directly after the first }{\f2\fs20 <ul>}{\fs22 ), }{\b\fs22\ul REPLACING XXX with YOUR sorrel username!!!}{\b\fs22 :}{\fs22 
\par 
\par }{\fs20\loch\af2 \tab \hich\af0\dbch\af0\loch\f2 <li> HW #11
\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 \hich\af0\dbch\af0\loch\f2 XXX/hw11_template1.pl}{\fs20\loch\af2 \hich\af0\dbch\af0\loch\f2 ">    
\par \hich\af0\dbch\af0\loch\f2  \tab           hw11_template1 </a>
\par 
\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 \hich\af0\dbch\af0\loch\f2 XXX/hw11_curr_reviews.pl}{\fs20\loch\af2 \hich\af0\dbch\af0\loch\f2 ">    
\par \hich\af0\dbch\af0\loch\f2  \tab           hw11_curr_reviews </a>
\par 
\par \tab \hich\af0\dbch\af0\loch\f2      <li> <a href\hich\af0\dbch\af0\loch\f2 =
\par \hich\af0\dbch\af0\loch\f2  "http://sorrel.humboldt.edu/cgi-bin/cgiwrap/}{\b\fs20\loch\af2 \hich\af0\dbch\af0\loch\f2 XXX/hw11_templ_review.pl}{\fs20\loch\af2 \hich\af0\dbch\af0\loch\f2 ">    
\par \hich\af0\dbch\af0\loch\f2  \tab           hw11_templ_review </a>
\par \hich\af0\dbch\af0\loch\f2  \tab      </ul>
\par \tab \hich\af0\dbch\af0\loch\f2 <br>
\par 
\par }{\fs22 \tab }{\f2\fs20 <li> Week 13 Lab Exercise}{\fs22 
\par }{\fs20\loch\af2 \hich\af0\dbch\af0\loch\f2         <ul>
\par \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 \hich\af0\dbch\af0\loch\f2 XXX/lab13_templa\hich\af0\dbch\af0\loch\f2 te1.pl}{\fs20\loch\af2 \hich\af0\dbch\af0\loch\f2 ">    
\par \tab \hich\af0\dbch\af0\loch\f2           lab13_template1 </a>
\par }{\b\fs20\loch\af2 
\par }{\fs20\loch\af2 \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 \hich\af0\dbch\af0\loch\f2 XXX/lab13_try_module1.pl}{\fs20\loch\af2 \hich\af0\dbch\af0\loch\f2 ">    
\par \tab \hich\af0\dbch\af0\loch\f2           lab13_try_module1 </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 {\fs22 
\par }\pard \s15\ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\fs22 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/f04cis480perl/480student_pages.html. 
\par (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 If, by the end of lab, you have completed the 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 
\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\b\fs22\ul HOMEWORK #11
\par 
\par }{\b 1.\tab }{Consider the date information that was sliced'n'diced from}{ the localtime( ) function in }{\b lect13_template1.pl}{. Perhaps something more general, derived from this, could be useful in other situations as well.
\par 
\par \tab I bet these are already available somewhere in the wonderful world of Perl, but they will also make for some simple module practice. Create a module }{\b DateStuff.pm }{that:
\par 
\par }\pard \s15\ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {*\tab resides in your new perl library directory (where you put }{\b FirstLabModule.pm}{)
\par 
\par *\tab contains at least the following functions:
\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {
\par }\pard \s15\ql \fi-420\li855\ri0\nowidctlpar\aspalpha\faauto\rin0\lin855\itap0 {\tab }{\b get_month}{
 - *returns* a string containing the *name* of the current month, starting with a capital letter (mixed case), determined/"computed" using localtime( ). (If run today, it would return }{\b November}{)
\par 
\par \tab }{\b get_year}{ - *returns" a string containing the year, expressed in 4 digits, determined/"computed" using localtime( ). (If run today, it would return }{\b 2004}{)
\par 
\par \tab }{\b get_monthday - }{*returns* a string containing the number of today's day of the month, determined/"computed" using localtime( ). (If this had been run on the day this handout was posted, it would return }{\b 18}{)
\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {
\par }\pard \s15\ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {*\tab includes other date-related functions that you would like to add, IF you wish.
\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {
\par }\pard \s15\ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {*\tab exports all three of the above so that using this module automatically imports them. (You can decide how you want to handle any additional functions you add.)
\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {
\par }\pard \s15\ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {*\tab follows the module guidelines given in lecture (and hopefully depicted in MyFirstModule.pm).
\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {
\par }{\b 2.\tab }{We must, of course, try out our module in some way. Here is a quick-n-sleazy way to do so: modify your }{\b lab13_template1.pl }{into }{\b hw11_template1.pl}{. It must:}{\b 
\par }{
\par }\pard \s15\ql \fi-420\li855\ri0\nowidctlpar\aspalpha\faauto\rin0\lin855\itap0 {*\tab add your local perl library directory to @INC using the }{\b lib}{ pragma
\par 
\par *\tab use your module }{\b DateStuff.pm}{
\par 
\par *\tab call the DateStuff's three required functions to determine the current month, day of the month, and year, instead of the logic currently in lab13_template1.pl.
\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {
\par }{\b 3.\tab }{Consider the book-review tables from HW #10. }{\b 
\par }{
\par \tab An SQL date literal is of the form '}{\b DD-MON-YY'}{ or }{\b 'DD-MON-YYYY' }{--- that is, the date that this assignment was posted would be expressed as }{\b '18-NOV-04' }{or }{\b '18-NOV-2004'}{
. (But, by default, it is SHOWN/returned from queries as }{\b '18-NOV-04'}{).
\par 
\par \tab Also note: you can select rows based on a date attribute whose values are in the current month of November with a query such as:
\par \tab 
\par \tab }{\f2 select *}{
\par }{\loch\af2 \tab \hich\af0\dbch\af0\loch\f2 from empl
\par \tab \hich\af0\dbch\af0\loch\f2 where hiredate like '%NOV-04';
\par 
\par \tab }{The }{\b like}{ operator lets you pattern match, and }{\b %}{ matches 0-or-more characters. ( _ matches any single character, if you were curious...)}{\loch\af2 
\par }{
\par \tab SO --- write a script }{\b hw11_curr_reviews.pl}{ that, when brought up:
\par }\pard \s15\ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {*\tab includes your name visibly within the result,
\par 
\par *\tab uses your }{\b DateStuff.pm }{module to determine the current month, and
\par 
\par *\tab prints out the current month's book reviews (in any reasonably-readable format of your choice)
\par 
\par *\tab (note: yes, it is true that }{\b get_month }{returns its result in a different form than the SQL month. But you have the Perl capabilities to fix *that*...)
\par 
\par *\tab (note: HTML::Template is }{\b not}{ involved in this particular script.)
\par 
\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\b 4. \tab }{Finally, let's do a bit more with HTML::Template. Write a template }{\b hw11_templ_review.tpl }{that:}{\b 
\par }\pard \s15\ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {*\tab visibly includes your name in the displayed result,
\par 
\par *\tab includes a }{\b <TMPL_VAR> }{tag to be replaced with the current date,
\par 
\par *\tab includes a }{\b <TMPL_IF> }{tag to be replaced with either a book review or a message about there being no available reviews if its condition is not satisfied.
\par 
\par *\tab (you may include other features/HTML::Template tags if you'd like --- these are the minimums.)
\par 
\par And, write a Perl script  }{\b hw11_templ_review.pl}{ that:
\par *\tab fills in }{\b hw11_templ_review.tpl, }{such that
\par 
\par *\tab it fills in the <TMPL_VAR> tag for the current date using your functions from }{\b DateStuff.pm}{, filling it in with a depiction of the current date in the SPECIFIC form:
\par \tab  \tab }{\b dd Month yyyy}{ (e.g., }{\b 18 November 2004}{)
\par 
\par *\tab it tries to fill in the <TMPL_IF> tag for a book review for any book review from your table that you care to try to choose. (This can be done simply or complicatedly --- your ch
oice. You can randomly pick, ask the user somehow to indicate, choose the latest review, etc.)
\par }\pard \s15\ql \fi-420\li1275\ri0\nowidctlpar\aspalpha\faauto\rin0\lin1275\itap0 {*\tab (note that you are welcome to just display some of the columns of the book review table --- whichever you think the reader will be most interested in.)
\par 
\par }\pard \s15\ql \fi-420\li855\ri0\nowidctlpar\aspalpha\faauto\rin0\lin855\itap0 {*\tab displays the HTML page resulting.
\par 
\par *\tab again, you can do more here if you like --- these are minimum requirements.
\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\tab 
\par }\pard \s15\ql \fi-15\li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {When you are done, make sure that the }{\b hw11_template1, hw11_curr_reviews}{, and }{\b hw11_templ_review}{ links from 480perl.html do indeed successfully
 run those respective scripts. Make sure that }{\b hw11_template1.pl, hw11_curr_reviews.pl}{, and }{\b hw11_templ_review.pl}{ are NOT world-readable (711 should make them executable but not readable.) 
\par }\pard \s15\ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {
\par And, read  }{\b\ul DateStuff.pm}{\ul ,}{ }{\b hw11_template1.pl}{,  }{\b hw11_curr_reviews.pl}{, }{\b hw11_templ_review.tpl}{ and }{\b hw11_templ_review.pl}{  into an e-mail message with the Subject }{\b 480 hw 11}{
, and e-mail it, NOT as an attachment, to st10@humboldt.edu by the due date and time given above. 
\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\b\fs22 
\par }\pard \s15\ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\b\fs22 
\par }\pard \s15\ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\b\fs20 
\par }}