{\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{\*\falt Cumberland};}{\f13\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt \'cb\'ce\'cc\'e5};}
{\f35\fswiss\fcharset128\fprq2{\*\panose 020b0604020202020204}Arial Unicode MS;}{\f181\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@SimSun;}{\f189\fswiss\fcharset128\fprq2{\*\panose 020b0604020202020204}@Arial Unicode MS;}
{\f252\froman\fcharset238\fprq2 Times New Roman CE{\*\falt Thorndale};}{\f253\froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Thorndale};}{\f255\froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Thorndale};}
{\f256\froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Thorndale};}{\f257\froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Thorndale};}{\f258\froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Thorndale};}
{\f259\froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Thorndale};}{\f260\froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Thorndale};}{\f272\fmodern\fcharset238\fprq1 Courier New CE{\*\falt Cumberland};}
{\f273\fmodern\fcharset204\fprq1 Courier New Cyr{\*\falt Cumberland};}{\f275\fmodern\fcharset161\fprq1 Courier New Greek{\*\falt Cumberland};}{\f276\fmodern\fcharset162\fprq1 Courier New Tur{\*\falt Cumberland};}
{\f277\fmodern\fcharset177\fprq1 Courier New (Hebrew){\*\falt Cumberland};}{\f278\fmodern\fcharset178\fprq1 Courier New (Arabic){\*\falt Cumberland};}{\f279\fmodern\fcharset186\fprq1 Courier New Baltic{\*\falt Cumberland};}
{\f280\fmodern\fcharset163\fprq1 Courier New (Vietnamese){\*\falt Cumberland};}{\f384\fnil\fcharset0\fprq2 SimSun Western{\*\falt \'cb\'ce\'cc\'e5};}{\f604\fswiss\fcharset0\fprq2 Arial Unicode MS Western;}
{\f602\fswiss\fcharset238\fprq2 Arial Unicode MS CE;}{\f603\fswiss\fcharset204\fprq2 Arial Unicode MS Cyr;}{\f605\fswiss\fcharset161\fprq2 Arial Unicode MS Greek;}{\f606\fswiss\fcharset162\fprq2 Arial Unicode MS Tur;}
{\f607\fswiss\fcharset177\fprq2 Arial Unicode MS (Hebrew);}{\f608\fswiss\fcharset178\fprq2 Arial Unicode MS (Arabic);}{\f609\fswiss\fcharset186\fprq2 Arial Unicode MS Baltic;}{\f610\fswiss\fcharset163\fprq2 Arial Unicode MS (Vietnamese);}
{\f611\fswiss\fcharset222\fprq2 Arial Unicode MS (Thai);}{\f2064\fnil\fcharset0\fprq2 @SimSun Western;}{\f2144\fswiss\fcharset0\fprq2 @Arial Unicode MS Western;}{\f2142\fswiss\fcharset238\fprq2 @Arial Unicode MS CE;}
{\f2143\fswiss\fcharset204\fprq2 @Arial Unicode MS Cyr;}{\f2145\fswiss\fcharset161\fprq2 @Arial Unicode MS Greek;}{\f2146\fswiss\fcharset162\fprq2 @Arial Unicode MS Tur;}{\f2147\fswiss\fcharset177\fprq2 @Arial Unicode MS (Hebrew);}
{\f2148\fswiss\fcharset178\fprq2 @Arial Unicode MS (Arabic);}{\f2149\fswiss\fcharset186\fprq2 @Arial Unicode MS Baltic;}{\f2150\fswiss\fcharset163\fprq2 @Arial Unicode MS (Vietnamese);}{\f2151\fswiss\fcharset222\fprq2 @Arial Unicode MS (Thai);}}
{\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\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \fs20\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 \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\cgrid\langnp1033\langfenp255 \snext15 Default;}{\s16\ql \li0\ri0\sa283\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 \sbasedon15 \snext16 Text body;}{
\s17\ql \li0\ri0\nowidctlpar\tqc\tx4320\tqr\tx8640\aspalpha\faauto\rin0\lin0\itap0 \fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 \sbasedon15 \snext17 header;}{\s18\ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 
\fs20\cf1\lang1033\langfe255\loch\f2\hich\af0\dbch\af0\cgrid\langnp1033\langfenp255 \sbasedon15 \snext18 Preformatted Text;}{\s19\ql \li0\ri0\sa283\nowidctlpar\brdrb\brdrdb\brdrw15\brdrcf15 \aspalpha\faauto\rin0\lin0\itap0 
\fs12\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 \sbasedon15 \snext16 Horizontal Line;}{\*\cs20 \additive \ul\cf9\lang0\langfe255\dbch\af0\langfenp255 Internet Link;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid22219\rsid553042
\rsid2102410\rsid3553136\rsid11162106}{\*\generator Microsoft Word 11.0.6359;}{\info{\title CIS 480 Exam #2 Review Suggestions}{\author Sharon Tuttle}{\operator Academic Computing}{\creatim\yr2004\mo10\dy21\hr14\min44}{\revtim\yr2004\mo10\dy21\hr14\min44}
{\printim\yr2004\mo9\dy16\hr11\min22}{\version2}{\edmins0}{\nofpages5}{\nofwords1099}{\nofchars6266}{\*\company Humboldt State University}{\nofcharsws7351}{\vern24703}}\margt1948 
\deftab1250\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\nolnhtadjtbl\rsidroot2102410 \fet0
{\*\ftnsep \pard\plain \ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \fs20\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid22219 \chftnsep 
\par }}{\*\ftnsepc \pard\plain \ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \fs20\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid22219 \chftnsepc 
\par }}{\*\aftnsep \pard\plain \ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \fs20\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid22219 \chftnsep 
\par }}{\*\aftnsepc \pard\plain \ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \fs20\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid22219 \chftnsepc 
\par }}\sectd \sbknone\linex0\headery1440\sectdefaultcl\sftnbj {\header \pard\plain \s17\ql \li0\ri0\nowidctlpar\tqc\tx4320\tqr\tx8640\aspalpha\faauto\rin0\lin0\itap0 \fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\fs18\insrsid22219 
CIS 480 - Exam #2 Review Suggestions\tab \tab p. }{\field{\*\fldinst {\fs18\insrsid22219 \\page}}{\fldrslt {\fs18\lang1024\langfe1024\noproof\insrsid22219 1}}}{\fs18\insrsid22219 
\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 \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 
\fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\b\insrsid22219 CIS 480 Exam #2 Review Suggestions
\par }\pard\plain \ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 \fs20\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\fs24\insrsid22219 
\par }{\fs24\cgrid0\insrsid22219\charrsid553042 *\tab last modified: 10-21-04 
\par 
\par *\tab remember: YOU ARE RESPONSIBLE for course reading, lectures/labs, and especially anything that's been on a homework or lab exercise; BUT, here's a quick overview of especially important material.
\par 
\par *\tab this will be a pencil-and-paper exam, but you will be read
ing and writing Perl code and fragments in this format. Note that a packet of Perl code will be included along with the exam, both for reference and for use directly in some exam questions --- the ability to make use of existing code as a reference is a v
ital skill in Perl (as in most programming languages).
\par 
\par }\pard \ql \fi-420\li855\ri0\nowidctlpar\aspalpha\faauto\rin0\lin855\itap0 {\fs24\cgrid0\insrsid22219\charrsid553042 *\tab note that you could be asked to write Perl expressions, statements, fragments, or up to and including entire Perl scripts;
\par 
\par *\tab note that I could ask you questions *about* Perl, or about various aspects of Perl;
\par 
\par *\tab note that I could ask you what a Perl fragment does or means; I could give you a fragment or script, and ask you what it does or what it would output in a given situation.
\par 
\par *\tab you could be asked to modify a fragment or script, or correct a fragment or script, as well;
\par }\pard \ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\fs24\insrsid22219 
\par *\tab while the focus of Exam #2 is mostly on the new material since Exam #1, obviously we are building on the previous material, and so you will still have to be comfortable with that previous material. Regular expressions may have 
some deliberate duplication in exam coverage.
\par 
\par *\tab CGI is not part of Exam #2's coverage; it will be part of the Final Exam's coverage, of course.
\par 
\par *\tab }{\b\fs24\insrsid22219 regular expressions}{\fs24\insrsid22219 
\par }\pard \ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {\fs24\insrsid22219 *\tab you know more, and have had more practice, in this area since Exam #1;
\par 
\par *\tab 
it would still be appropriate for me to give you a pattern, and ask if different strings match it, and/or ask you to describe what sorts of strings it matches; I could give you a description, and ask you to write a corresponding pattern; there are many po
ssibilities.
\par 
\par *\tab obviously, we have done a lot with matching and with substitution; you should be comfortable with such operations. You should be able to use these with $_ and with other scalars (with the help of the binding operator).
\par }\pard \ql \fi-420\li1275\ri0\nowidctlpar\aspalpha\faauto\rin0\lin1275\itap0 {\fs24\insrsid22219 *\tab you should also be very comfortable with s///g for global substitution, also;
\par 
\par *\tab what do we mean when we say that, by default, s/// is "greedy"? What are the implications of this in use? 
\par 
\par }\pard \ql \fi-420\li855\ri0\nowidctlpar\aspalpha\faauto\rin0\lin855\itap0 {\fs24\cgrid0\insrsid22219\charrsid2102410 *\tab you should still be comfortable with the following metacharacters/quantifiers:
\par \tab }{\f2\fs24\cgrid0\insrsid22219\charrsid2102410 .   \\   *   +   ?   ( )   | }{\fs24\cgrid0\insrsid22219\charrsid2102410 
\par }{\fs24\loch\af2\insrsid22219\charrsid2102410 
\par }{\fs24\cgrid0\insrsid22219\charrsid2102410 *\tab you should still be able to use a character class to specify possible characters that can match any single character within that class;
\par 
\par }\pard \ql \fi-420\li1275\ri0\nowidctlpar\aspalpha\faauto\rin0\lin1275\itap0 {\fs24\cgrid0\insrsid22219\charrsid2102410 *\tab still at least be comfortable with the shortcuts \\d, \\w, \\s; and, if given a description o
f a shortcut, you should be able to then use it appropriately within a pattern.
\par 
\par }\pard \ql \fi-420\li855\ri0\nowidctlpar\aspalpha\faauto\rin0\lin855\itap0 {\fs24\cgrid0\insrsid22219\charrsid2102410 *\tab you should be able to use the anchors ^ and $, and the word-boundary anchor \\b
\par 
\par *\tab you should be able to use general quantifiers ( \{x, y\} )
\par 
\par *\tab you should be able to make basic use of memory parentheses; what does this mean? how can you use them in conjunction with backreferences? outside of the pattern, how can you access the contents of these regular expression memories?
\par 
\par *\tab we did discuss the }{\b\fs24\cgrid0\insrsid22219\charrsid2102410 split}{\fs24\cgrid0\insrsid22219\charrsid2102410  and }{\b\fs24\cgrid0\insrsid22219\charrsid2102410 join}{\fs24\cgrid0\insrsid22219\charrsid2102410  operators during t
his coverage; you should be comfortable with these operators.
\par 
\par *\tab you should also be comfortable with the automatic match variables }{\f2\fs24\cgrid0\insrsid22219\charrsid2102410 $& $` $'}{\fs24\cgrid0\insrsid22219\charrsid2102410 
\par }\pard \ql \fi-420\li1290\ri0\nowidctlpar\aspalpha\faauto\rin0\lin1290\itap0 {\fs24\cgrid0\insrsid22219\charrsid2102410 *\tab what does each mean? how might each be useful?
\par 
\par *\tab what are the potential efficiency implications of using these?
\par }{\b\i\scaps\fs24\cgrid0\insrsid22219 
\par }\pard \ql \fi-420\li855\ri0\nowidctlpar\aspalpha\faauto\rin0\lin855\itap0 {\fs24\insrsid22219 *\tab 
how can you shift the case of what someone has typed? how can you shift just the next character to uppercase or lowercase? how can you turn off case shifting?
\par 
\par *\tab what are some man pages that are part of the regular Perl distributions that further discuss regular expressions? (}{\b\fs24\insrsid22219 perlre}{\fs24\insrsid22219 , }{\b\fs24\insrsid22219 perlrequick}{\fs24\insrsid22219 ,}{\b\fs24\insrsid22219  }{
\fs24\insrsid22219 and }{\b\fs24\insrsid22219 perlretut}{\fs24\insrsid22219 )}{\insrsid22219 
\par }{\b\i\scaps\fs24\cgrid0\insrsid22219 
\par }\pard \ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\fs24\insrsid22219 *\tab }{\b\fs24\insrsid22219 short-circuit evaluation}{\fs24\insrsid22219 
\par }{\b\fs24\insrsid22219 
\par }\pard \ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {\fs24\cgrid0\insrsid22219\charrsid2102410 *\tab what is meant by "short circuit evaluation"? Does Perl have it? How can it be useful?
\par 
\par *\tab what does a statement such as :
\par }{\b\i\scaps\fs24\cgrid0\insrsid22219 
\par }\pard\plain \s15\ql \fi-435\li1710\ri0\nowidctlpar\aspalpha\faauto\rin0\lin1710\itap0 \fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\fs20\loch\af2\insrsid22219 \hich\af0\dbch\af0\loch\f2 my $last_name = $last_name\{$someone\} || '(No
\hich\af0\dbch\af0\loch\f2  last name)';
\par 
\par }\pard \s15\ql \fi-435\li1275\ri0\nowidctlpar\aspalpha\faauto\rin0\lin1275\itap0 {\insrsid22219 ...mean? 
\par }\pard\plain \ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 \fs20\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\fs24\insrsid22219 
\par *\tab }{\b\fs24\insrsid22219 files and directories}{\fs24\insrsid22219 
\par }{\b\fs24\insrsid22219 
\par }\pard \ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {\fs24\cgrid0\insrsid22219\charrsid2102410 *\tab what is a filehandle? In Perl tradition/style, how are these to be written?
\par }\pard \ql \fi-420\li1275\ri0\nowidctlpar\aspalpha\faauto\rin0\lin1275\itap0 {\fs24\cgrid0\insrsid22219\charrsid2102410 *\tab (note: you are expected to write them in this way on the exam!)
\par }\pard \ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {\fs24\cgrid0\insrsid22219\charrsid2102410 
\par *\tab you should be comfortable with the Perl-provided filehandles STDIN, STDOUT, ARGV, and STDERR; (we haven't really done much with DATA and ARGVOUT as of yet...)
\par 
\par *\tab how do you open a filehandle for reading? for writing? for appending?
\par }\pard \ql \fi-420\li1275\ri0\nowidctlpar\aspalpha\faauto\rin0\lin1275\itap0 {\fs24\insrsid22219 *\tab In Perl tradition/style, what kind of a statement should a filehandle opening almost always be embedded within? (}{\b\fs24\insrsid22219 or}{
\fs24\insrsid22219  }{\b\fs24\insrsid22219  --- }{\fs24\insrsid22219 try to open, or }{\b\fs24\insrsid22219 die}{\fs24\insrsid22219  if open fails)
\par 
\par *\tab Perl style to note:
\par }\pard \ql \fi-420\li1695\ri0\nowidctlpar\aspalpha\faauto\rin0\lin1695\itap0 {\fs24\cgrid0\insrsid22219\charrsid2102410 *\tab it is better style to indicate < explicitly to indicate a filehandle being opened for input;
\par *\tab it is better style to put a blank between the <, >, or >> and the filename, for security reasons;
\par 
\par *\tab The above style should be used for the exam.
\par 
\par }\pard \ql \fi-420\li855\ri0\nowidctlpar\aspalpha\faauto\rin0\lin855\itap0 {\fs24\cgrid0\insrsid22219\charrsid2102410 *\tab how do you close a filehandle?
\par }\pard \ql \fi-420\li1275\ri0\nowidctlpar\aspalpha\faauto\rin0\lin1275\itap0 {\fs24\cgrid0\insrsid22219\charrsid2102410 *\tab More Perl style: you are expected to close filehandles explicitly within your scripts (and this is expected on the exam as well).

\par 
\par *\tab what are some of the reasons why this is considered good style?
\par }{\b\i\scaps\fs24\cgrid0\insrsid22219 
\par }\pard \ql \fi-420\li855\ri0\nowidctlpar\aspalpha\faauto\rin0\lin855\itap0 {\fs24\insrsid22219 *\tab be comfortable with }{\b\fs24\insrsid22219 die }{\fs24\insrsid22219 and }{\b\fs24\insrsid22219 warn}{\fs24\insrsid22219 
\par }\pard \ql \fi-420\li1275\ri0\nowidctlpar\aspalpha\faauto\rin0\lin1275\itap0 {\fs24\insrsid22219 *\tab what happens if }{\b\fs24\insrsid22219 die}{\fs24\insrsid22219 's or }{\b\fs24\insrsid22219 warn}{\fs24\insrsid22219 
's message doesn't end with a newline? if it does end with a newline?
\par 
\par *\tab what happens if $! is included in }{\b\fs24\insrsid22219 die}{\fs24\insrsid22219 's or }{\b\fs24\insrsid22219 warn}{\fs24\insrsid22219 's message?
\par 
\par *\tab what is the difference between }{\b\fs24\insrsid22219 die}{\fs24\insrsid22219  and }{\b\fs24\insrsid22219 warn}{\fs24\insrsid22219 ?
\par 
\par }\pard \ql \fi-420\li855\ri0\nowidctlpar\aspalpha\faauto\rin0\lin855\itap0 {\fs24\insrsid22219 *\tab how can you use a filehandle for input and output?
\par }\pard \ql \fi-420\li1260\ri0\nowidctlpar\aspalpha\faauto\rin0\lin1260\itap0 {\fs24\insrsid22219 *\tab how can you change the default output filehandle?
\par 
\par }\pard \ql \fi-420\li855\ri0\nowidctlpar\aspalpha\faauto\rin0\lin855\itap0 {\fs24\insrsid22219 *\tab be comfortable with using file tests on files;
\par }\pard \ql \fi-420\li1275\ri0\nowidctlpar\aspalpha\faauto\rin0\lin1275\itap0 {\fs24\insrsid22219 *\tab you should know and be comfortable with }{\b\fs24\insrsid22219 -e}{\fs24\insrsid22219 , }{\b\fs24\insrsid22219 -w}{\fs24\insrsid22219 , }{
\b\fs24\insrsid22219 -r}{\fs24\insrsid22219 , }{\b\fs24\insrsid22219 -x}{\fs24\insrsid22219 , }{\b\fs24\insrsid22219 -d}{\fs24\insrsid22219 ;
\par 
\par *\tab you should be able to use others appropriately if a test question described them and then asked you to use them to perform some task (or to describe what would happen using them in a given scenario).
\par 
\par }\pard \ql \fi-420\li855\ri0\nowidctlpar\aspalpha\faauto\rin0\lin855\itap0 {\fs24\cgrid0\insrsid22219\charrsid2102410 *\tab what are some of the directory operations that Perl provides?
\par }\pard \ql \fi-420\li1275\ri0\nowidctlpar\aspalpha\faauto\rin0\lin1275\itap0 {\fs24\cgrid0\insrsid22219\charrsid2102410 *\tab why might these be preferable to using the system command?
\par 
\par *\tab you should know and be comfortable with chdir, glob;
\par 
\par *\tab you should be able to use others appropriately if a test question described them and then asked you to use them to perform some task (or to describe what would happen using them in a given scenario).
\par }\pard \ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\b\i\scaps\fs24\cgrid0\insrsid22219 
\par }{\fs24\insrsid22219 *\tab }{\b\fs24\insrsid22219 process management}{\fs24\insrsid22219 
\par }{\b\fs24\insrsid22219 
\par }\pard \ql \fi-420\li825\ri0\nowidctlpar\aspalpha\faauto\rin0\lin825\itap0 {\fs24\cgrid0\insrsid22219\charrsid2102410 *\tab you should still be comfortable with the }{\b\fs24\cgrid0\insrsid22219\charrsid2102410 syste}{
\b\fs24\cgrid0\insrsid2102410\charrsid2102410 m}{\fs24\cgrid0\insrsid2102410  function;}{\fs24\cgrid0\insrsid22219\charrsid2102410 
\par 
\par *\tab how can you call }{\b\fs24\cgrid0\insrsid22219\charrsid2102410 system}{\fs24\cgrid0\insrsid22219\charrsid2102410  to be guaranteed to avoid a child-shell?
\par }\pard \ql \fi-420\li1260\ri0\nowidctlpar\aspalpha\faauto\rin0\lin1260\itap0 {\fs24\insrsid22219 *\tab why is this sometimes preferred from a security point-of-view?
\par 
\par }\pard \ql \fi-420\li855\ri0\nowidctlpar\aspalpha\faauto\rin0\lin855\itap0 {\fs24\insrsid22219 *\tab what is }{\b\fs24\insrsid22219 %ENV}{\fs24\insrsid22219 ? How can it be useful within a Perl script?
\par 
\par *\tab how can you use backquotes to capture the output of a command?
\par }\pard \ql \fi-420\li1275\ri0\nowidctlpar\aspalpha\faauto\rin0\lin1275\itap0 {\fs24\cgrid0\insrsid22219\charrsid2102410 *\tab be comfortable with using this in a list context, also;
\par 
\par }\pard \ql \fi-420\li870\ri0\nowidctlpar\aspalpha\faauto\rin0\lin870\itap0 {\fs24\cgrid0\insrsid22219\charrsid2102410 *\tab be able to use a process as a filehandle (for input and output);
\par }\pard \ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\b\i\scaps\fs24\cgrid0\insrsid22219 
\par }{\fs24\insrsid22219 *\tab }{\b\fs24\insrsid22219 more string manipulation}{\fs24\insrsid22219 
\par }{\b\fs24\insrsid22219 
\par }\pard \ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {\fs24\cgrid0\insrsid22219\charrsid2102410 *\tab be comfortable with }{\b\fs24\cgrid0\insrsid22219\charrsid2102410 substr}{\fs24\cgrid0\insrsid22219\charrsid2102410  and }{
\b\fs24\cgrid0\insrsid22219\charrsid2102410 index}{\fs24\cgrid0\insrsid22219\charrsid2102410 ;
\par 
\par *\tab be comfortable with }{\b\fs24\cgrid0\insrsid22219\charrsid2102410 sprintf}{\fs24\cgrid0\insrsid22219\charrsid2102410 ; (how does it differ from printf?)
\par }\pard \ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\fs24\insrsid22219\charrsid2102410 
\par }{\fs24\cgrid0\insrsid22219\charrsid2102410 *\tab }{\b\fs24\cgrid0\insrsid22219\charrsid2102410 sort subroutines
\par }{\b\i\scaps\fs24\cgrid0\insrsid22219 
\par }\pard \ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {\fs24\insrsid22219 *\tab how can you sort other than ASCIIbetically?
\par 
\par *\tab you need to be comfortable performing numeric sorts, sorting a hash by value, and sorting by multiple keys;
\par 
\par *\tab what is the meaning of}{\b\fs24\insrsid22219  <=>}{\fs24\insrsid22219 ? of}{\b\fs24\insrsid22219  cmp}{\fs24\insrsid22219 ?
\par }{\b\fs24\insrsid22219 
\par }{\fs24\cgrid0\insrsid22219\charrsid2102410 *\tab be able to read and write a sort subroutine; be able to call sort so that it uses such a sort subroutine.
\par }\pard \ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\fs24\cgrid0\insrsid22219\charrsid2102410 
\par }{\fs24\insrsid22219\charrsid2102410 *\tab }{\b\fs24\insrsid22219\charrsid2102410 DBM files and DBM hashes}{\fs24\insrsid22219\charrsid2102410 
\par 
\par }\pard \ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {\fs24\cgrid0\insrsid22219\charrsid2102410 *\tab what are these? what are some of their benefits? how might they be used?
\par 
\par *\tab how can you open these? close these? use these?
\par }\pard \ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\fs24\insrsid22219\charrsid2102410 
\par }{\fs24\cgrid0\insrsid22219\charrsid2102410 *\tab }{\b\fs24\cgrid0\insrsid22219\charrsid2102410 editing files in place
\par }{\fs24\cgrid0\insrsid22219\charrsid2102410 
\par }\pard \ql \fi-420\li855\ri0\nowidctlpar\aspalpha\faauto\rin0\lin855\itap0 {\fs24\insrsid22219 *\tab ...both from a Perl script and from the command line
\par 
\par *\tab (the text calls these }{\b\fs24\insrsid22219 VARIABLE LENGTH (TEXT) DATABASES}{\fs24\insrsid22219 ...)
\par }{\fs24\cgrid0\insrsid22219\charrsid2102410 
\par *\tab be sure you understand the significance of $^I  and what happens when you set it within a script;
\par }\pard \ql \fi-420\li840\ri0\nowidctlpar\aspalpha\faauto\rin0\lin840\itap0 {\b\i\scaps\fs24\cgrid0\insrsid22219 
\par }\pard \ql \fi-420\li420\ri0\nowidctlpar\aspalpha\faauto\rin0\lin420\itap0 {\fs24\insrsid22219 
\par }}