You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by st...@apache.org on 2001/09/02 16:27:03 UTC

cvs commit: modperl-site/guide/code lwp-bench.pl

stas        01/09/02 07:27:03

  Modified:    guide    CHANGES advocacy.html config.html control.html
                        correct_headers.html databases.html dbm.html
                        debug.html download.html hardware.html help.html
                        index.html index_long.html install.html intro.html
                        mod_perl_guide.pdf.gz modules.html performance.html
                        perl.html porting.html scenario.html snippets.html
                        start.html strategy.html troubleshooting.html
               guide/code lwp-bench.pl
  Log:
  A new version of the guide:
  
  * snippets.pod
  
    o adding a note about not being able to set Content-type and
      Content-encoding headers in non-OK responses (Geoffrey Young).
  
  * modules.pod
  
    o removing a myth about Apache::Registry suffering from
      "XYZ123456.html ==> /perl/foo.pl?p1=XYZ&p2=123456" kind of URI
      rewrites (multiply cached version of the same files). It's not
      true, at least it works OK now. (Geoff Young)
  
  * install.pod
  
    o covalent/ex-raven + mod_perl installation scenario nuked, since
      covalent doesn't distibute their sources any more, but only as a
      DSO package.
  
  * porting.pod
  
    o added a ref to Text::Reform in format/write section (Matt
      Sergeant)
  
    o s/\$^M/\$^T/ (Glenn)
  
    o explained the caveat of not having the path in @INC with
      Apache::Reload.
  
  * help.pod:
  
    o adding a link to High Availability project
  
    o adding a link to the list of Apache projects' mailing lists
  
  * Minor corrections:
  
    o Aaron Johnson went through the guide and cleaned it up from typos
      and mistakes in English.
  
    o strategy.pod: (Mike MacKenzie)
  
  Revision  Changes    Path
  1.30      +45 -0     modperl-site/guide/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/CHANGES,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- CHANGES	2001/04/27 16:57:09	1.29
  +++ CHANGES	2001/09/02 14:26:57	1.30
  @@ -2,6 +2,51 @@
   		### mod_perl Guide CHANGES file ###
   		###################################
   
  +09.02.2001 ver 1.30
  +
  +* snippets.pod
  +
  +  o adding a note about not being able to set Content-type and
  +    Content-encoding headers in non-OK responses (Geoffrey Young).
  +
  +* modules.pod
  +
  +  o removing a myth about Apache::Registry suffering from
  +    "XYZ123456.html ==> /perl/foo.pl?p1=XYZ&p2=123456" kind of URI
  +    rewrites (multiply cached version of the same files). It's not
  +    true, at least it works OK now. (Geoff Young)
  +
  +* install.pod
  +
  +  o covalent/ex-raven + mod_perl installation scenario nuked, since
  +    covalent doesn't distibute their sources any more, but only as a
  +    DSO package.
  +
  +* porting.pod
  +
  +  o added a ref to Text::Reform in format/write section (Matt
  +    Sergeant)
  +
  +  o s/\$^M/\$^T/ (Glenn)
  +
  +  o explained the caveat of not having the path in @INC with
  +    Apache::Reload.
  +
  +* help.pod:
  +
  +  o adding a link to High Availability project
  +
  +  o adding a link to the list of Apache projects' mailing lists
  +
  +* Minor corrections:
  +
  +  o Aaron Johnson went through the guide and cleaned it up from typos
  +    and mistakes in English.
  +
  +  o strategy.pod: (Mike MacKenzie)
  +
  +
  +
   04.26.2001 ver 1.29
   
   * dbm.pod:
  
  
  
  1.12      +3 -3      modperl-site/guide/advocacy.html
  
  Index: advocacy.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/advocacy.html,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- advocacy.html	2001/01/11 13:48:14	1.11
  +++ advocacy.html	2001/09/02 14:26:57	1.12
  @@ -36,7 +36,7 @@
   
   	<LI><A HREF="#Thoughts_about_scalability_and_f">Thoughts about scalability and flexibility</A>
   	<LI><A HREF="#The_boss_the_developer_and_advo">The boss, the developer and advocacy</A>
  -	<LI><A HREF="#A_summary_of_perl_cgi_discussion">A summary of perl/cgi discussion at slashdot.org</A>
  +	<LI><A HREF="#A_summary_of_perl_CGI_discussion">A summary of perl/CGI discussion at slashdot.org</A>
   </UL>
   
       </div>
  @@ -150,7 +150,7 @@
   <P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
   <HR>
  -<CENTER><H1><A NAME="A_summary_of_perl_cgi_discussion">A summary of perl/cgi discussion at slashdot.org</A></H1></CENTER>
  +<CENTER><H1><A NAME="A_summary_of_perl_CGI_discussion">A summary of perl/CGI discussion at slashdot.org</A></H1></CENTER>
   <P>
   Well, there was a nice discussion of merits of Perl in CGI world. I took
   the time to summarize this thread, so here is what I've got:
  @@ -272,7 +272,7 @@
   <td align=center valign=center>
   
   <b><font size=-1>Written by <a
  -href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 09/03/2000
  +href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 05/05/2001
   </font></b>
   <br>
   
  
  
  
  1.32      +18 -18    modperl-site/guide/config.html
  
  Index: config.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/config.html,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- config.html	2001/04/27 16:57:09	1.31
  +++ config.html	2001/09/02 14:26:57	1.32
  @@ -181,8 +181,8 @@
   
   <P>
   There is a warning in the <EM>httpd.conf</EM> distributed with Apache about simply editing <EM>httpd.conf</EM> and running the server, without understanding all the implications. This is
  -another warning. Modifying the config file and adding new directives can
  -introduce security problems, and have performance implications.
  +another warning. Modifying the configuration file and adding new directives
  +can introduce security problems, and have performance implications.
   
   <P>
   The Apache distribution comes with an extensive configuration manual, and
  @@ -712,7 +712,7 @@
   <P>
   To ease maintenance and to simplify multiple server installations, the
   Apache/mod_perl configuration system allows you several alternative ways to
  -keep your configration directives in separate places. The
  +keep your configuration directives in separate places. The
   <CODE>Include</CODE> directive in <EM>httpd.conf</EM> allow you to include the contents of other files, just as if the
   information were all contained in <EM>httpd.conf</EM>. This is a feature of Apache itself. For example if you want all your
   mod_perl configuration to be placed in a separate file <EM>mod_perl.conf</EM> you can do that by adding to <EM>httpd.conf</EM> this directive:
  @@ -736,7 +736,7 @@
   mod_perl adds two further directives: <CODE>&lt;Perl&gt;</CODE> sections allow you to execute Perl code from within any configuration file
   at server startup time, and as you will see later, a file containing any
   Perl program can be executed (also at server startup time) simply by
  -mentioning its name in a <CODE>PerlRequire</CODE> or <CODE>PerlModule</CODE> directve.
  +mentioning its name in a <CODE>PerlRequire</CODE> or <CODE>PerlModule</CODE> directive.
   
   <P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
  @@ -764,7 +764,7 @@
       <P>
   will map all requests starting with <EM>/foo</EM> onto the files starting with <EM>/home/httpd/foo/</EM>. So when Apache gets a request <A
   HREF="http://www.example.com/foo/test.pl">http://www.example.com/foo/test.pl</A>
  -the server will remap this into the file <EM>test.pl</EM> in the directory <EM>/home/httpd/foo/</EM>.
  +the server will map this into the file <EM>test.pl</EM> in the directory <EM>/home/httpd/foo/</EM>.
   
   <P>
   In addition <CODE>ScriptAlias</CODE> assigns all the requests that match the URI (i.e. <EM>/cgi-bin</EM>) to be executed under mod_cgi.
  @@ -2297,7 +2297,7 @@
       </table>
       <P>
   I must stress that all the code that is run at server initialization time
  -is run with root priveleges if you are executing it as the root user (which
  +is run with root privileges if you are executing it as the root user (which
   you have to do unless you choose to run the server on an unprivileged port,
   above 1024). This means that anyone who has write access to a script or
   module that is loaded by <CODE>PerlModule</CODE> or
  @@ -2740,7 +2740,7 @@
   <P>
   Technically, you aren't required to supply the <CODE>use()</CODE> statement in your (handler?) code if it was already loaded during server
   startup (i.e. by '<CODE>PerlRequire startup.pl</CODE>'). When writing your code, however, you should not assume the module code
  -has been preloaded. In the future, you or someone else will revist this
  +has been preloaded. In the future, you or someone else will revisit this
   code and will not understand how it is possible to use a module's methods
   without first loading the module itself.
   
  @@ -3792,8 +3792,8 @@
   <P>
   The solution is not to mix mod_rewrite and mod_alias. mod_rewrite does
   everything mod_alias does--except for <CODE>ScriptAlias</CODE> which is not really relevant to mod_perl anyway. Don't rely on the module
  -ordering, but use explicitely disjoint URL namespaces for <CODE>Alias</CODE> and
  -<CODE>Rewrite</CODE>. In other words any URL regexp that can potentially match a
  +ordering, but use explicitly disjoint URL namespaces for <CODE>Alias</CODE> and
  +<CODE>Rewrite</CODE>. In other words any URL regex that can potentially match a
   <CODE>Rewrite</CODE> rule should not be used in an <CODE>Alias</CODE>, and vice versa. Given that mod_rewrite can easily do what mod_alias does,
   it's no problem.
   
  @@ -3910,8 +3910,8 @@
   involve security.
   
   <P>
  -We never were completely sure why the default of the <CODE>ServerToken</CODE>
  -directive in Apache is <CODE>Full</CODE> rather than <CODE>Minimal</CODE>. Seems like you would only make it <CODE>Full</CODE> if you are debugging. Probably the reason for using the <CODE>ServerToken Full</CODE> is for a show-off, so NetCraft (http://netcraft.com) and other similar
  +We never were completely sure why the default of the <CODE>ServerTokens</CODE>
  +directive in Apache is <CODE>Full</CODE> rather than <CODE>Minimal</CODE>. Seems like you would only make it <CODE>Full</CODE> if you are debugging. Probably the reason for using the <CODE>ServerTokens Full</CODE> is for a show-off, so NetCraft (http://netcraft.com) and other similar
   survey services will count more Apache servers, which is good for all of
   us, but you really want to reveal as little information as possible to the
   potential crackers.
  @@ -3957,7 +3957,7 @@
       <P>
   So as you see that a lot of information is revealed and a <CODE>Full</CODE>
   
  -<CODE>ServerToken</CODE> has been used.
  +<CODE>ServerTokens</CODE> has been used.
   
   <P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
  @@ -4024,11 +4024,11 @@
   HTTP headers reliable.
   
   <P>
  -A possible solution for this problem is to have the the mod_perl server
  -listen on two different ports (e.g. 8000 and 8001) and have the mod_rewrite
  -proxy rule in the regular server redirect to port 8000 and the mod_rewrite
  -proxy rule in the SSL virtual host redirect to port 8001. In the mod_perl
  -server just check the <CODE>PORT</CODE> variable to tell if the connection is secure.
  +A possible solution for this problem is to have the mod_perl server listen
  +on two different ports (e.g. 8000 and 8001) and have the mod_rewrite proxy
  +rule in the regular server redirect to port 8000 and the mod_rewrite proxy
  +rule in the SSL virtual host redirect to port 8001. In the mod_perl server
  +just check the <CODE>PORT</CODE> variable to tell if the connection is secure.
   
   <P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
  @@ -4293,7 +4293,7 @@
   <td align=center valign=center>
   
   <b><font size=-1>Written by <a
  -href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 03/20/2001
  +href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 07/10/2001
   </font></b>
   <br>
   
  
  
  
  1.32      +19 -20    modperl-site/guide/control.html
  
  Index: control.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/control.html,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- control.html	2001/04/27 16:57:10	1.31
  +++ control.html	2001/09/02 14:26:57	1.32
  @@ -183,8 +183,8 @@
   with the smallest PID.
   
   <P>
  -You will see many <CODE>httpd</CODE> executables running on your system, but you should never need to send
  -signals to any of them except the parent, whose pid is in the <EM>PidFile</EM>. There are three signals that you can send to the parent: <CODE>SIGTERM</CODE>, <CODE>SIGHUP</CODE>, and <CODE>SIGUSR1</CODE>.
  +You will see several <CODE>httpd</CODE> processes running on your system, but you should never need to send signals
  +to any of them except the parent, whose pid is in the <EM>PidFile</EM>. There are three signals that you can send to the parent: <CODE>SIGTERM</CODE>, <CODE>SIGHUP</CODE>, and <CODE>SIGUSR1</CODE>.
   
   <P>
   Some folks prefer to specify signals using numerical values, rather than
  @@ -212,7 +212,7 @@
       </table>
       <P>
   Note that to send these signals from the command line the <CODE>SIG</CODE> prefix must be omitted and under some operating systems they will need to
  -be preceeded by a minus sign, e.g. <CODE>kill -15</CODE> or <CODE>kill -TERM</CODE> followed by the PID.
  +be preceded by a minus sign, e.g. <CODE>kill -15</CODE> or <CODE>kill -TERM</CODE> followed by the PID.
   
   <P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
  @@ -249,7 +249,7 @@
   almost equivalent to stopping and then restarting the server.
   
   <P>
  -If the configuration files contain errors when restart is signalled, the
  +If the configuration files contain errors when restart is signaled, the
   parent will exit, so it is important to check the configuration files for
   errors before issuing a restart. How to perform the check will be covered
   shortly;
  @@ -316,7 +316,7 @@
   causing a long delay during a restart. Sometimes this will be followed by a
   series of messages appearing in the server <EM>error_log</EM>
   file, warning that certain child processes did not exit as expected. This
  -happens when after a few attempts advicing the child process to quit, the
  +happens when after a few attempts advising the child process to quit, the
   child is still in the middle of <CODE>perl_destruct(),</CODE> and a lethal <CODE>KILL</CODE> signal is sent, aborting any operation the child has happened to execute
   and <EM>brutally</EM> killing it.
   
  @@ -1117,8 +1117,7 @@
   <P>
   Note the line marked <CODE>WORKAROUND</CODE>, which fixes an obscure error when starting mod_perl enabled Apache by
   setting the real UID to the effective UID. Without this workaround, a
  -mismatch between the real and the effective UIDs causes Perl to croak on
  -the <CODE>-e</CODE> switch.
  +mismatch between the real and the effective UID causes Perl to croak on the <CODE>-e</CODE> switch.
   
   <P>
   Note that you must be using a version of Perl that recognizes and emulates
  @@ -1192,7 +1191,7 @@
   When you run your own development box, it's okay to start the webserver by
   hand when you need to. On a production system it is possible that the
   machine the server is running on will have to be rebooted. When the reboot
  -is completed, who is going to rememeber to start the server? It's easy to
  +is completed, who is going to remember to start the server? It's easy to
   forget this task, and what happens if you aren't around when the machine is
   rebooted?
   
  @@ -1240,9 +1239,9 @@
       </table>
       <P>
   The scripts themselves reside in the <EM>/etc/rc.d/init.d</EM> directory. There are symbolic links to these scripts in other directories.
  -The names are the same as the script names but they have numbers prepended,
  -which are used for executing the scripts in a particular order: the lower
  -numbers are executed earlier.
  +The names are the same as the script names but they have numerical
  +prefixes, which are used for executing the scripts in a particular order:
  +the lower numbers are executed earlier.
   
   <P>
   When the system starts (level 3) we want the Apache to be started when
  @@ -1300,7 +1299,7 @@
         </tr>
       </table>
       <P>
  -Most systems have GUI utilites to automate the creation of symbolic links.
  +Most systems have GUI utilities to automate the creation of symbolic links.
   For example RedHat Linux includes the <CODE>control-panel</CODE>
   utility, which amongst other things includes the <CODE>RunLevel Manager</CODE>. (which can be invoked directly as either <CODE>ntsysv(8)</CODE> or
   <CODE>tksysv(8)).</CODE> This will help you to create the proper symbolic
  @@ -1575,7 +1574,7 @@
   <HR>
   <CENTER><H1><A NAME="Monitoring_the_Server_A_watchdo">Monitoring the Server.  A watchdog.</A></H1></CENTER>
   <P>
  -With mod_perl many things can happen to your server. It is possibile that
  +With mod_perl many things can happen to your server. It is possible that
   the server might die when you are not around. As with any other critical
   service you need to run some kind of watchdog.
   
  @@ -2101,7 +2100,7 @@
       </table>
       <P>
   The IP addresses are the addresses of the developer desktop machines (where
  -they are running their web browsers). So if an html file includes a a
  +they are running their web browsers). So if an html file includes a
   relative URI <EM>/perl/test.pl</EM> or even
   <EM>http://www.example.com/perl/test.pl</EM>, clicking on the link will be internally proxied to <A
   HREF="http://www.example.com:8000/perl/test.pl">http://www.example.com:8000/perl/test.pl</A>
  @@ -2117,7 +2116,7 @@
   We wish to stress again, that the above setup will work only with relative
   URIs in the HTML code. If you choose to generate full URIs including non-80
   port the requests originated from this HTML code will bypass the light
  -server listenting to the default port 80, and go directly to the <EM>server:port</EM> of the full URI.
  +server listening to the default port 80, and go directly to the <EM>server:port</EM> of the full URI.
   
   <P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
  @@ -2252,9 +2251,9 @@
   our advices.
   
   <P>
  -Certaintly, your particular system might have maintainance chores that
  -aren't covered here, but at least you will be alerted that these chores are
  -real and should be taken care of.
  +Certainly, your particular system might have maintenance chores that aren't
  +covered here, but at least you will be alerted that these chores are real
  +and should be taken care of.
   
   <P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
  @@ -2266,7 +2265,7 @@
   the disk space over time. Second these should be monitored for possible
   sudden explosive growth rates, when something goes astray in your code
   running at the mod_perl server and the process starts to log thousands of
  -error messages in second without stopping, untill all the disk space is
  +error messages in second without stopping, until all the disk space is
   used, and the server cannot work anymore.
   
   <P>
  @@ -2838,7 +2837,7 @@
   <td align=center valign=center>
   
   <b><font size=-1>Written by <a
  -href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 04/19/2001
  +href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 05/05/2001
   </font></b>
   <br>
   
  
  
  
  1.15      +15 -8     modperl-site/guide/correct_headers.html
  
  Index: correct_headers.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/correct_headers.html,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- correct_headers.html	2001/04/27 16:57:10	1.14
  +++ correct_headers.html	2001/09/02 14:26:57	1.15
  @@ -162,7 +162,7 @@
   <P>
   If the number of hits is significant, you might want to consider what
   cache-friendliness means (you may also want to read
  -<A HREF="././correct_headers.html#_4_">[4]</A>) and how you can cooperate with caches to increase the performace of your
  +<A HREF="././correct_headers.html#_4_">[4]</A>) and how you can cooperate with caches to increase the performance of your
   site. Especially if you use Squid in accelerator mode (helpful hints for
   Squid, see
   <A HREF="././correct_headers.html#_1_">[1]</A>), you will have a strong motivation to cooperate with it. This document
  @@ -292,7 +292,7 @@
     use Date::Parse;
     # Date::Parse parses RCS format, Apache::Util::parsedate doesn't
     $Mtime ||=
  -    Date::Parse::str2time(substr q$Date: 2001/04/27 16:57:10 $, 6);
  +    Date::Parse::str2time(substr q$Date: 2001/09/02 14:26:57 $, 6);
     $r-&gt;set_last_modified($Mtime);</pre>
           </td>
   	    
  @@ -692,7 +692,7 @@
   as a strong validator.
   
   <P>
  -An <CODE>ETag</CODE> value is marked as a weak validator by prepending the string <CODE>W/</CODE> to the quoted string, otherwise it is strong. In perl this would mean
  +An <CODE>ETag</CODE> value is marked as a weak validator by preceding the string <CODE>W/</CODE> to the quoted string, otherwise it is strong. In perl this would mean
   something like this:
   
   <P>
  @@ -841,7 +841,7 @@
   <HR>
   <CENTER><H1><A NAME="3_Requests">3) Requests</A></H1></CENTER>
   <P>
  -Section 13.11 of the specifications states that the only two cachable
  +Section 13.11 of the specifications states that the only two cacheable
   methods are <CODE>GET</CODE> and <CODE>HEAD</CODE>.
   
   <P>
  @@ -890,8 +890,8 @@
   <HR>
   <CENTER><H2><A NAME="3_2_POST">3.2) POST</A></H2></CENTER>
   <P>
  -The response to a <CODE>POST</CODE> request is not cachable due to an underspecification in the HTTP standards.
  -Section 13.4 does not forbid caching of responses to <CODE>POST</CODE> requests but no other part of the HTTP standard explains how caching of <CODE>POST</CODE> requests could be implemented, so we are in a vacuum here and all existing
  +The response to a <CODE>POST</CODE> request is not cacheable due to an underspecification in the HTTP
  +standards. Section 13.4 does not forbid caching of responses to <CODE>POST</CODE> requests but no other part of the HTTP standard explains how caching of <CODE>POST</CODE> requests could be implemented, so we are in a vacuum here and all existing
   caching servers therefore refuse to implement caching of <CODE>POST</CODE>
   requests. This may change if somebody does the groundwork of defining the
   semantics for cache operations on <CODE>POST</CODE>. Note that some browsers with their more aggressive caching do implement
  @@ -1226,9 +1226,16 @@
   browser or proxy, of an individual page wherein the page in question has
   data that may be of a sensitive nature as in a ``form page for submittal''
   and the creator of the page wants to make sure that the page does not get
  -submitted twice.
  +submitted twice. Please notice that some of the information on this page is
  +a little bit outdated, but it's still a good resource for those who cannot
  +generate their own HTTP headers.
   
   <P><LI>
  +<P>
  +Web Caching and Content Delivery Resources <A
  +HREF="http://www.web-caching.com/">http://www.web-caching.com/</A>
  +
  +<P><LI>
   </UL>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
   <HR>
  @@ -1283,7 +1290,7 @@
   <td align=center valign=center>
   
   <b><font size=-1>Written by <a
  -href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 11/21/2000
  +href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 07/03/2001
   </font></b>
   <br>
   
  
  
  
  1.19      +2 -2      modperl-site/guide/databases.html
  
  Index: databases.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/databases.html,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- databases.html	2001/01/11 13:48:15	1.18
  +++ databases.html	2001/09/02 14:26:57	1.19
  @@ -343,7 +343,7 @@
   <HR>
   <CENTER><H2><A NAME="Database_Locking_Risks">Database Locking Risks</A></H2></CENTER>
   <P>
  -Be very very careful when locking the database (<CODE>LOCK TABLE ...</CODE>) or singular rows if you use <CODE>Apache::DBI</CODE> or similar persistent connections. MySQL threads keep tables locked until
  +Be very careful when locking the database (<CODE>LOCK TABLE ...</CODE>) or singular rows if you use <CODE>Apache::DBI</CODE> or similar persistent connections. MySQL threads keep tables locked until
   the thread ends (connection is closed) or the tables are unlocked. If your
   session <CODE>die()'s</CODE> while tables are locked, they will stay neatly
   locked as your connection won't be closed either.
  @@ -1025,7 +1025,7 @@
   <td align=center valign=center>
   
   <b><font size=-1>Written by <a
  -href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 12/18/2000
  +href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 05/05/2001
   </font></b>
   <br>
   
  
  
  
  1.19      +2 -2      modperl-site/guide/dbm.html
  
  Index: dbm.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/dbm.html,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- dbm.html	2001/04/27 16:57:11	1.18
  +++ dbm.html	2001/09/02 14:26:58	1.19
  @@ -502,7 +502,7 @@
   
   <P><LI>
   <P>
  -<CODE>DB_File::Lock</CODE> -- extremely lightweighted <CODE>DB_File</CODE> wrapper that simply flocks an external lockfile before tie-ing the database
  +<CODE>DB_File::Lock</CODE> -- extremely lightweight <CODE>DB_File</CODE> wrapper that simply flocks an external lockfile before tie-ing the database
   and drops the lock after untie. Allows one to use the same lockfile for
   multiple databases to avoid deadlock problems, if desired. Use this for
   databases where updates and reads are quick and simple flock locking
  @@ -753,7 +753,7 @@
   <td align=center valign=center>
   
   <b><font size=-1>Written by <a
  -href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 03/26/2001
  +href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 05/05/2001
   </font></b>
   <br>
   
  
  
  
  1.29      +28 -28    modperl-site/guide/debug.html
  
  Index: debug.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/debug.html,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- debug.html	2001/04/27 16:57:11	1.28
  +++ debug.html	2001/09/02 14:26:58	1.29
  @@ -744,10 +744,10 @@
   
   <P>
   If you cannot access your <EM>error_log</EM> file because you are unable to telnet to your machine (generally the case
  -with some ISPs who provide user CGI support but no telnet access), you
  -might want to use a CGI script I wrote to fetch the latest lines from the
  -file (with a bonus of colored output for easier reading). You might need to
  -ask your ISP to install this script for general use. See <A HREF="././snippets.html#Watching_the_error_log_File_With">Watching the error_log file without telneting to the server</A> .
  +when an ISP provides user CGI support but no telnet access), you might want
  +to use a CGI script I wrote to fetch the latest lines from the file (with a
  +bonus of colored output for easier reading). You might need to ask your ISP
  +to install this script for general use. See <A HREF="././snippets.html#Watching_the_error_log_File_With">Watching the error_log file without telneting to the server</A> .
   
   <P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
  @@ -989,7 +989,7 @@
   
   <P>
   If you use this setting and you would like to log when a request was
  -cancelled by a SIGPIPE in your Apache <EM>access_log</EM>, you must define a custom <CODE>LogFormat</CODE> in your <EM>httpd.conf</EM>, like so:
  +canceled by a SIGPIPE in your Apache <EM>access_log</EM>, you must define a custom <CODE>LogFormat</CODE> in your <EM>httpd.conf</EM>, like so:
   
   <P>
   
  @@ -1008,7 +1008,7 @@
         </tr>
       </table>
       <P>
  -If the server has noticed that the request was cancelled via a
  +If the server has noticed that the request was canceled via a
   <CODE>SIGPIPE</CODE>, then the log line will end with <CODE>1</CODE>, otherwise it will just be a dash. e.g.:
   
   <P>
  @@ -1274,10 +1274,10 @@
   
   <P>
   Under mod_cgi the resource locking issue is a problem only if you happened
  -to create external lock files and and use them for lock indication, instead
  -of using <CODE>flock().</CODE> If the script running under mod_cgi is
  -aborted between the lock and the unlock code, and you didn't bother to
  -write cleanup code to remove old dead locks then you are in big trouble.
  +to create external lock files and use them for lock indication, instead of
  +using <CODE>flock().</CODE> If the script running under mod_cgi is aborted
  +between the lock and the unlock code, and you didn't bother to write
  +cleanup code to remove old dead locks then you are in big trouble.
   
   <P>
   The solution is to use an <CODE>END</CODE> block to place the cleanup code in:
  @@ -1411,7 +1411,7 @@
   If the file the script reads is big, it'd take a relatively long time for
   this code to complete. All this time the file remains open and locked.
   While it's other processes may access this file for reading (shared lock),
  -the process that wants to modify the file (which requires an acquision of
  +the process that wants to modify the file (which requires an acquisition of
   the exclusive lock), will be blocked waiting for this section to complete.
   
   <P>
  @@ -1468,7 +1468,7 @@
       </table>
       <P>
   Here is another similar example, but now it uses an exclusive lock. The
  -script reads in a file and writes it back, prepending a number of new text
  +script reads in a file and writes it back, adding a number of new text
   lines to the head of the file.
   
   <P>
  @@ -1519,8 +1519,8 @@
   get away with <EM>+&lt;</EM> as well, please refer to the <EM>perlfunc</EM> manpage for more information about the <CODE>open()</CODE> function.)
   
   <P>
  -Next, the code prepares the lines of text it wants to prepend to the head
  -of the file, and assigns them and the content of the file to the
  +Next, the code prepares the lines of text it wants to add to the head of
  +the file, and assigns them and the content of the file to the
   <CODE>@lines</CODE> array. Now we have our data ready to be written back to the file, so we
   <CODE>seek()</CODE> to the start of the file and <CODE>truncate()</CODE> it
   to zero size. In our example the file always grows, so in this case there
  @@ -1532,8 +1532,8 @@
   data back to the file and close it, which unlocks it as well.
   
   <P>
  -Did you notice that we created the text lines to be prepended as close to
  -the place of usage as possible? This complies with good
  +Did you notice that we created the text lines to be added as close to the
  +place of usage as possible? This complies with good
   <EM>"locality of code"</EM> style, but it makes the critical section longer. In such cases you should
   sacrifice style, in order to make the critical section as short as
   possible. An improved version of this script with a shorter critical
  @@ -1582,7 +1582,7 @@
       </table>
       <P>
   There are two important differences. First, we prepare the text lines to be
  -prepended <EM>before</EM> the file is locked. Second, instead of creating a new array and copying
  +added <EM>before</EM> the file is locked. Second, instead of creating a new array and copying
   lines from one array to another, we append the file directly to the <CODE>@lines</CODE> array.
   
   <P>
  @@ -3796,7 +3796,7 @@
         </tr>
       </table>
       <P>
  -Where <CODE>$]</CODE> is the perl's version number. As you see <CODE>!1</CODE> prints the value of <CODE>$]</CODE>, prepended by the command that was executed.
  +Where <CODE>$]</CODE> is the perl's version number. As you see <CODE>!1</CODE> prints the value of <CODE>$]</CODE>, preceded by the command that was executed.
   
   <P>
   Things start to get more interesting as the code does. In the example
  @@ -5242,7 +5242,7 @@
   <P>
   Sometimes you can find a process hanging because of some kind of the system
   problem. For example if the processes was doing some disk IO operation it
  -might get stuck in uninterruptible sleep (<CODE>'D'</CODE> disk wait in <CODE>ps(1)</CODE> report, <CODE>'U'</CODE> in <CODE>top(1))</CODE> which indicates that either something is broken in
  +might get stuck in uninterruptable sleep (<CODE>'D'</CODE> disk wait in <CODE>ps(1)</CODE> report, <CODE>'U'</CODE> in <CODE>top(1))</CODE> which indicates that either something is broken in
   your kernel or that you're using NFS. Or and you cannot kill&nbsp;-9 this process.
   
   <P>
  @@ -5587,7 +5587,7 @@
         </tr>
       </table>
       <P>
  -The above code asigns a signal handler for the <CODE>USR2</CODE> signal. This signal has been chosen because it's least likely to be used by
  +The above code assigns a signal handler for the <CODE>USR2</CODE> signal. This signal has been chosen because it's least likely to be used by
   the other parts of the server.
   
   <P>
  @@ -5877,7 +5877,7 @@
         </tr>
       </table>
       <P>
  -We <EM>"easily"</EM> figure out that the first three system calls implement the <CODE>$i++</CODE>, while the other other three are responsible for the
  +We <EM>"easily"</EM> figure out that the first three system calls implement the <CODE>$i++</CODE>, while the other three are responsible for the
   <CODE>sleep 1</CODE> call.
   
   <P>
  @@ -5989,7 +5989,7 @@
       </table>
       <P>
   It's clear from the above trace, that the process waits for an exclusive
  -lock. (Note, that the missing closing parentnheses is not a typo!)
  +lock. (Note, that the missing closing parentheses is not a typo!)
   
   <P>
   As you become familiar with watching the traces of different processes, you
  @@ -6103,7 +6103,7 @@
   <P>
   C/C++ debuggers are a very large topic and beyond the scope of this
   document, but the gdb man page is quite good and you can try <CODE>info
  -gdb</CODE> as well. You might also want to check the <CODE>ddd</CODE> (Data Display Debbuger) which provides a visual interface to <CODE>gdb</CODE> and other debuggers. It even knows how to debug Perl programs!
  +gdb</CODE> as well. You might also want to check the <CODE>ddd</CODE> (Data Display Debugger) which provides a visual interface to <CODE>gdb</CODE> and other debuggers. It even knows how to debug Perl programs!
   
   <P>
   For completeness, let's see the gdb trace of the httpd process that's still
  @@ -6840,7 +6840,7 @@
         </tr>
       </table>
       <P>
  -We can see that on the second and subsequent calls <CODE>$sv</CODE> already has preallocated memory.
  +We can see that on the second and subsequent calls <CODE>$sv</CODE> already has previously allocated memory.
   
   <P>
   So, if you can afford the memory, a larger buffer means fewer <CODE>brk()</CODE>
  @@ -6871,8 +6871,8 @@
   are done.
   
   <P>
  -Note: Preallocating a scalar in this way saves reallocation in v5.005 but
  -may not do so in other versions.
  +Note: Previously allocating a scalar in this way saves reallocation in
  +v5.005 but may not do so in other versions.
   
   <P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
  @@ -7029,7 +7029,7 @@
   something like <CODE>1</CODE>,
   <CODE>9</CODE>, <CODE>4</CODE>, <CODE>19</CODE> (a different number each time you hit the browser's reload button) since
   each time your script will be served by a different child. (On some
  -operating systmes, e.g. AIX, the parent httpd process will assign all of
  +operating systems, e.g. AIX, the parent httpd process will assign all of
   the requests to the same child process if all of the children are idle).
   But if you run in <CODE>httpd
   -X</CODE> single server mode you will get <CODE>2</CODE>, <CODE>3</CODE>, <CODE>4</CODE>, <CODE>5</CODE>... (assuming that <CODE>random()</CODE> returned <CODE>1</CODE> at the first call)
  @@ -7196,7 +7196,7 @@
   <td align=center valign=center>
   
   <b><font size=-1>Written by <a
  -href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 02/19/2001
  +href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 04/28/2001
   </font></b>
   <br>
   
  
  
  
  1.19      +3 -3      modperl-site/guide/download.html
  
  Index: download.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/download.html,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- download.html	2001/07/17 15:29:31	1.18
  +++ download.html	2001/09/02 14:26:58	1.19
  @@ -172,9 +172,9 @@
   <P>
   Every Apache project rolls a new tar.gz snapshot of the latest CVS version
   every 6 hours. You can grab the latest mod_perl CVS snapshot from <A
  -HREF="http://cvs.apache.org/snapshots/modperl/">http://cvs.apache.org/snapshots/modperl/</A>,
  +HREF="http://perl.apache.org/snapshots/modperl/">http://perl.apache.org/snapshots/modperl/</A>,
   all the mod_perl related projects are available from <A
  -HREF="http://cvs.apache.org/snapshots.">http://cvs.apache.org/snapshots.</A>
  +HREF="http://perl.apache.org/snapshots/.">http://perl.apache.org/snapshots/.</A>
   
   
   <P>
  @@ -450,7 +450,7 @@
   <td align=center valign=center>
   
   <b><font size=-1>Written by <a
  -href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 02/09/2001
  +href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 07/18/2001
   </font></b>
   <br>
   
  
  
  
  1.13      +5 -5      modperl-site/guide/hardware.html
  
  Index: hardware.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/hardware.html,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- hardware.html	2001/01/11 13:48:16	1.12
  +++ hardware.html	2001/09/02 14:26:58	1.13
  @@ -146,7 +146,7 @@
   looking for to support an Apache/mod_perl server, then when you know what
   you want from your OS, you can go out and find it. Visit the Web sites of
   the operating systems you are interested in. You can gauge user's opinions
  -by searching the relevant discussions in newsgroup and mailing list
  +by searching the relevant discussions in newsgroups and mailing list
   archives. Deja - <A HREF="http://deja.com">http://deja.com</A> and eGroups
   - <A HREF="http://egroups.com">http://egroups.com</A> are good examples. I
   will leave this fan research to the reader.
  @@ -165,7 +165,7 @@
   be a simple reason which you can find and fix. There are OSs which won't
   work unless you reboot them twice a day. You don't want to use the OS of
   this kind, no matter how good the OS' vendor sales department. Do not
  -follow flushy advertisments, follow developers advices instead.
  +follow flushy advertisements, follow developers advices instead.
   
   <P>
   Generally, people who have used the OS for some time can tell you a lot
  @@ -543,7 +543,7 @@
   <P>
   If your service is I/O bound (does a lot of read/write operations to disk)
   you need a very fast disk, especially if the you need a relational
  -database, which are the main I/O stream creaters. So you should not spend
  +database, which are the main I/O stream creators. So you should not spend
   the money on Video card and monitor! A cheap card and a 14`` monochrome
   monitor are perfectly adequate for a Web server, you will probably access
   it by <CODE>telnet</CODE> or <CODE>ssh</CODE> most of the time. Look for disks with the best price/performance ratio. Of
  @@ -552,7 +552,7 @@
   
   <P>
   You must think about RAID or similar systems if you have an enormous data
  -set to serve (what is an enormous data set nowadays? Gigabytes, terabytes?)
  +set to serve (what is an enormous data set nowadays? Gigabytes, Terabytes?)
   or you expect a really big web traffic.
   
   <P>
  @@ -734,7 +734,7 @@
   <td align=center valign=center>
   
   <b><font size=-1>Written by <a
  -href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 05/28/2000
  +href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 05/05/2001
   </font></b>
   <br>
   
  
  
  
  1.29      +22 -4     modperl-site/guide/help.html
  
  Index: help.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/help.html,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- help.html	2001/04/27 16:57:12	1.28
  +++ help.html	2001/09/02 14:26:58	1.29
  @@ -155,7 +155,7 @@
   
   <P>
   The book should be available from your local bookstore or from your
  -favourite on-line bookseller. O'Reilly lists this book as:
  +favorite on-line bookseller. O'Reilly lists this book as:
   
   <P>
   
  @@ -375,6 +375,12 @@
   - This page describes the mechanics of creating, compiling, releasing and
   maintaining Perl modules.
   
  +<P><LI><STRONG><A NAME="item_Creating">Creating (and Maintaining) Perl Modules</A></STRONG>
  +<P>
  +<A
  +HREF="http://www.mathforum.com/~ken/perl_modules.html">http://www.mathforum.com/~ken/perl_modules.html</A>
  +
  +
   <P><LI><STRONG><A NAME="item_XS">XS tutorials</A></STRONG>
   <P>
   Perl manpages: <EM>perlguts</EM>, <EM>perlxs</EM>, and <EM>perlxstut</EM> manpages.
  @@ -524,6 +530,13 @@
   <P>
   <A HREF="http://www.apache.org">http://www.apache.org</A>
   
  +<P><LI><STRONG><A NAME="item_Apache">Apache Mailing Lists</A></STRONG>
  +<P>
  +You will find a comprehensive list of all Apache projects' mailing lists
  +at: <A
  +HREF="http://www.apache.org/foundation/mailinglists.html">http://www.apache.org/foundation/mailinglists.html</A>
  +
  +
   <P><LI><STRONG><A NAME="item_Apache">Apache Quick Reference Card</A></STRONG>
   <P>
   <A HREF="http://www.refcards.com">http://www.refcards.com</A> (other
  @@ -710,7 +723,7 @@
   <P>
   <EM>Solaris 2.x - Tuning Your TCP/IP Stack and More</EM>
   <A
  -HREF="http://www.rvs.uni-hannover.de/people/voeckler/tune/EN/tune.html">http://www.rvs.uni-hannover.de/people/voeckler/tune/EN/tune.html</A>
  +HREF="http://www.sean.de/Solaris/tune.html">http://www.sean.de/Solaris/tune.html</A>
   
   
   <P>
  @@ -719,13 +732,18 @@
   Solaris 2.x OS, most of it will be relevant of other Unix flavors. At the
   end an extensive list of related literature is presented.
   
  +<P><LI>
  +<P>
  +High-Availability Linux Project <A
  +HREF="http://www.linux-ha.org/">http://www.linux-ha.org/</A>
  +
   </UL>
   <P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
   <HR>
   <CENTER><H1><A NAME="Get_help_with_Unix_OS_flavors_">Get help with Unix OS flavors -- Unix OS related resources</A></H1></CENTER>
   <UL>
  -<P><LI><STRONG><A NAME="item_Memory">Memory system management and arhitecture:</A></STRONG>
  +<P><LI><STRONG><A NAME="item_Memory">Memory system management and architecture:</A></STRONG>
   <P>
   The Solaris memory system, sizing, tools and architecture: <A
   HREF="http://www.sun.com/solutions/third-party/global/SAS/pdf/vmsizing.pdf">http://www.sun.com/solutions/third-party/global/SAS/pdf/vmsizing.pdf</A>
  @@ -786,7 +804,7 @@
   <td align=center valign=center>
   
   <b><font size=-1>Written by <a
  -href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 03/20/2001
  +href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 08/22/2001
   </font></b>
   <br>
   
  
  
  
  1.34      +2 -2      modperl-site/guide/index.html
  
  Index: index.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/index.html,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- index.html	2001/04/27 16:57:12	1.33
  +++ index.html	2001/09/02 14:26:58	1.34
  @@ -22,7 +22,7 @@
         </p>
       </center>
   
  -    <center><p><b>Version 1.29 Apr 28, 2001</b></p></center>
  +    <center><p><b>Version 1.30 Sep 2, 2001</b></p></center>
    
   
       <table align=center width="70%">
  @@ -333,7 +333,7 @@
   	    <b><font size=-1>
   		Written by <a
   		  href="help.html#Contacting_me">Stas
  -		  Bekman</a>.<br> Last Modified at 04/28/2001
  +		  Bekman</a>.<br> Last Modified at 09/02/2001
   	      </font></b>
   	    <br>
   	    
  
  
  
  1.8       +5 -11     modperl-site/guide/index_long.html
  
  Index: index_long.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/index_long.html,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- index_long.html	2001/04/27 16:57:13	1.7
  +++ index_long.html	2001/09/02 14:26:58	1.8
  @@ -22,7 +22,7 @@
         </p>
       </center>
   
  -    <center><p><b>Version 1.29 Apr 28, 2001</b></p></center>
  +    <center><p><b>Version 1.30 Sep 2, 2001</b></p></center>
    
   
       <table align=center width="70%">
  @@ -272,13 +272,6 @@
   			<LI><A HREF="install.html#Note_For_Solaris_2_5_users">Note For Solaris 2.5 users</A>
   		</UL>
   
  -		<LI><A HREF="install.html#mod_perl_and_Raven_SSL">mod_perl and Raven SSL</A>
  -		<UL>
  -
  -			<LI><A HREF="install.html#Dynamic_DSO_mod_perl_and_Raven">Dynamic (DSO) mod_perl and Raven SSL Installation</A>
  -			<LI><A HREF="install.html#Static_mod_perl_and_dynamic_Rave">Static mod_perl and dynamic Raven SSL Installation</A>
  -		</UL>
  -
   		<LI><A HREF="install.html#mod_perl_and_mod_php">mod_perl and mod_php</A>
   	</UL>
   
  @@ -483,7 +476,7 @@
   		<LI><A HREF="strategy.html#Apache_s_mod_proxy">Apache's mod_proxy</A>
   	</UL>
   
  -	<LI><A HREF="strategy.html#When_One_Machine_is_not_Enough_f">When One Machine is not Enough for RDBMS DataBase and mod_perl</A>
  +	<LI><A HREF="strategy.html#When_One_Machine_is_not_Enough_f">When One Machine is not Enough for RDBMS Database and mod_perl</A>
   	<UL>
   
   		<LI><A HREF="strategy.html#Servers_Requirements">Servers' Requirements</A>
  @@ -1199,6 +1192,7 @@
   	<LI><A HREF="snippets.html#Redirecting_POST_Requests">Redirecting POST Requests</A>
   	<LI><A HREF="snippets.html#Redirecting_While_Maintaining_En">Redirecting While Maintaining Environment Variables</A>
   	<LI><A HREF="snippets.html#Terminating_a_Child_Process_on_R">Terminating a Child Process on Request Completion</A>
  +	<LI><A HREF="snippets.html#Setting_Content_type_and_Content">Setting Content-type and Content-encoding headers in non-OK responses</A>
   	<LI><A HREF="snippets.html#More_on_Relative_Paths">More on Relative Paths</A>
   	<LI><A HREF="snippets.html#Watching_the_error_log_File_With">Watching the error_log File Without Telneting to the Server</A>
   	<LI><A HREF="snippets.html#Accessing_Variables_from_the_Cal">Accessing Variables from the Caller's Package</A>
  @@ -1270,7 +1264,7 @@
   
   	<LI><A HREF="advocacy.html#Thoughts_about_scalability_and_f">Thoughts about scalability and flexibility</A>
   	<LI><A HREF="advocacy.html#The_boss_the_developer_and_advo">The boss, the developer and advocacy</A>
  -	<LI><A HREF="advocacy.html#A_summary_of_perl_cgi_discussion">A summary of perl/cgi discussion at slashdot.org</A>
  +	<LI><A HREF="advocacy.html#A_summary_of_perl_CGI_discussion">A summary of perl/CGI discussion at slashdot.org</A>
   </UL>
   <P>
   <LI><A HREF="help.html"><B><FONT SIZE=+1>Getting Help and Further Learning </FONT></B></A></LI><P>
  @@ -1518,7 +1512,7 @@
   	    <b><font size=-1>
   		Written by <a
   		  href="help.html#Contacting_me">Stas
  -		  Bekman</a>.<br> Last Modified at 04/28/2001
  +		  Bekman</a>.<br> Last Modified at 09/02/2001
   	      </font></b>
   	    <br>
   	    
  
  
  
  1.21      +26 -522   modperl-site/guide/install.html
  
  Index: install.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/install.html,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- install.html	2001/04/27 16:57:13	1.20
  +++ install.html	2001/09/02 14:26:58	1.21
  @@ -132,13 +132,6 @@
   			<LI><A HREF="#Note_For_Solaris_2_5_users">Note For Solaris 2.5 users</A>
   		</UL>
   
  -		<LI><A HREF="#mod_perl_and_Raven_SSL">mod_perl and Raven SSL</A>
  -		<UL>
  -
  -			<LI><A HREF="#Dynamic_DSO_mod_perl_and_Raven">Dynamic (DSO) mod_perl and Raven SSL Installation</A>
  -			<LI><A HREF="#Static_mod_perl_and_dynamic_Rave">Static mod_perl and dynamic Raven SSL Installation</A>
  -		</UL>
  -
   		<LI><A HREF="#mod_perl_and_mod_php">mod_perl and mod_php</A>
   	</UL>
   
  @@ -970,7 +963,8 @@
   <HR>
   <CENTER><H3><A NAME="Environment_Variables">Environment Variables</A></H3></CENTER>
   <P>
  -There are a few enviroment variables that influence the build/test process.
  +There are a few environment variables that influence the build/test
  +process.
   
   <P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
  @@ -1129,7 +1123,7 @@
   which prints '1'--meaning that <CODE>PERL_LOG</CODE> callback hook was enabled. (That's because <CODE>EVERYTHING=1</CODE> enables them all.)
   
   <P>
  -Another approach is to configure <CODE>Apache::Status</CODE> as explain on page XXX of Chapter YYY and run <A
  +Another approach is to configure <CODE>Apache::Status</CODE> and run <A
   HREF="http://localhost/perl-status?hooks">http://localhost/perl-status?hooks</A>
   to check for enabled hooks.
   
  @@ -1449,11 +1443,11 @@
   Both the gdbm and db libraries offer ndbm emulation, which is the interface
   that Apache actually uses, so when you build mod_perl you end up with
   whichever library was linked first by the perl compile. If you build apache
  -without mod_perl you end up with whatever appears to be be your ndbm
  -library which will vary between systems, and especially Linux
  -distributions. You may have to work a bit to get both Apache and Perl to
  -use the same library and you are likely to have trouble copying the dbm
  -file from one system to another or even using it after an upgrade.
  +without mod_perl you end up with whatever appears to be your ndbm library
  +which will vary between systems, and especially Linux distributions. You
  +may have to work a bit to get both Apache and Perl to use the same library
  +and you are likely to have trouble copying the dbm file from one system to
  +another or even using it after an upgrade.
   
   <P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
  @@ -1579,7 +1573,7 @@
   <HR>
   <CENTER><H2><A NAME="Built_Server_Testing_make_test_">Built Server Testing (make test)</A></H2></CENTER>
   <P>
  -After building the server, it's a good idea to test it throughly, by
  +After building the server, it's a good idea to test it thoroughly, by
   calling:
   
   <P>
  @@ -3369,500 +3363,6 @@
       <P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
   <HR>
  -<CENTER><H2><A NAME="mod_perl_and_Raven_SSL">mod_perl and Raven SSL</A></H2></CENTER>
  -<P>
  -The following are the installation notes for the static and DSO mod_perl.
  -Please consult <A
  -HREF="http://www.covalent.net/support">http://www.covalent.net/support</A>
  -if you have additional questions regarding Raven SSL.
  -
  -<P>
  -[ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
  -<HR>
  -<CENTER><H3><A NAME="Dynamic_DSO_mod_perl_and_Raven">Dynamic (DSO) mod_perl and Raven SSL Installation</A></H3></CENTER>
  -<P>
  -To install Raven SSL and mod_perl dynamically:
  -
  -<OL>
  -<P><LI>
  -<P>
  -Un-tar and un-gunzip Raven SSL and mod_perl into their respective
  -directories.
  -
  -<P><LI>
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  % cd raven_ssl-x.x.x</pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P>
  -Install Raven SSL and Apache via:
  -
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  % ./setup --with-apache</pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P><LI>
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  % cd mod_perl_x.xx</pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P><LI>
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  % perl Makefile.PL USE_APXS=1 \
  -     WITH_APXS=/usr/local/apache/bin/apxs \
  -     EVERYTHING=1
  -     [...]</pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P><LI>
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  % make ; make install</pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P><LI>
  -<P>
  -Move the <CODE>LoadModule mod_perl.c</CODE> and <CODE>Addmodule mod_perl.c</CODE> lines in
  -<EM>httpd.conf</EM> above the <CODE>&lt;IfDefine SSL&gt;</CODE> section.
  -
  -</OL>
  -<P>
  -[ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
  -<HR>
  -<CENTER><H3><A NAME="Static_mod_perl_and_dynamic_Rave">Static mod_perl and dynamic Raven SSL Installation</A></H3></CENTER>
  -<P>
  -To installs Raven SSL dynamically and mod_perl statically:
  -
  -<OL>
  -<P><LI>
  -<P>
  -Un-tar and un-gunzip Apache, Raven SSL and mod_perl into their respective
  -directories
  -
  -<P><LI>
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  % cd raven_ssl-x.x.x</pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P>
  -Install Raven SSL via
  -
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  % ./setup</pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P>
  -This is an example of setup scenario:
  -
  -<UL>
  -<P><LI>
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  Please select the directory where you want to 
  -  install Raven SSL and related packages
  -  Directory [/usr/local]  -&gt; </pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P>
  -Accept the default or supply a different directory.
  -
  -<P><LI>
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  Installing the Apache binary is the easiest 
  -  and quickest way to secure Apache with Raven SSL.
  -  Do you want to install Apache? [Y/n]  -&gt; n</pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P>
  -Answer <CODE>n</CODE>, we want to install it from mod_perl sources.
  -
  -<P><LI>
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  Please select the directory where you want to
  -  install Raven SSL.
  -  Directory [/usr/local/raven]  -&gt; </pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P>
  -Accept the default or supply a different directory.
  -
  -<P><LI>
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  Apache will not be installed
  -  Raven SSL will be installed in:
  -  /usr/local/raven</pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P>
  -Sure, we know that :)
  -
  -<P><LI>
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  Do you want to proceed with installation? [Y/n]  -&gt; Y</pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P>
  -Yes, we want to proceeed.
  -
  -<P><LI>
  -<P>
  -Now Raven completes the installation of its files.
  -
  -</UL>
  -<P><LI>
  -<P>
  -Now it's a time to patch the Apache source with Raven.
  -
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  % /usr/local/raven/bin/raven_admin_tls
  -     select Option 1, 'Export Raven'</pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P>
  -Note: this option exports the required EAPI patches and the needed Raven
  -SSL module files into your Apache source tree
  -
  -<UL>
  -<P><LI>
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  Choose Apache version to export to:
  -  Available Apache versions :
  -  (1) 1.3.12
  -  Selection?  -&gt; 1</pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P>
  -Choose the version you want to build Raven with.
  -
  -<P><LI>
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  Export Raven SSL Module to Apache source root:
  -  Apache source root directory []  -&gt; </pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P>
  -Specify the Apache source root directory, e.g.:
  -
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  /usr/src/apache-1.x.x</pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P><LI>
  -<P>
  -Back to the main menu:
  -
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  Choose an action :
  -  (1) Export Raven SSL
  -  (2) Upgrade Raven SSL
  -  (3) Exit
  -  Selection? [1]  -&gt; 3</pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P>
  -Choose 3 to finish.
  -
  -</UL>
  -<P><LI>
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  % cd mod_perl-x.xx</pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P><LI>
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  % perl Makefile.PL APACHE_PREFIX=/path/to/apache_1.x.x \
  -        APACHE_SRC=/path/to/apache_x.x.x \
  -        EVERYTHING=1 \
  -        USE_APACI=1 \
  -        PREP_HTTPD=1 \
  -        DO_HTTPD=1</pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P><LI>
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  % make ; make install</pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P><LI>
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  % cd ../apache-x.x.x</pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P><LI>
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  % ./configure --target=httpsd \
  -      --enable-module=most \
  -      --enable-shared=max \
  -      --enable-suexec \
  -      --suexec-logfile=logs/suexec.log \
  -      --activate-module=src/modules/perl/libperl.a</pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P><LI>
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  % make ; make install</pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P><LI>
  -<P>
  -In the <EM>httpd.conf</EM> file make sure that the AddModule&nbsp;mod_perl.c
  -line is above <CODE>&lt;IfDefine SSL&gt;</CODE> section.
  -
  -</OL>
  -<P>
  -[ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
  -<HR>
   <CENTER><H2><A NAME="mod_perl_and_mod_php">mod_perl and mod_php</A></H2></CENTER>
   <P>
   This is a simple installation scenario of the mod_perl and mod_php in
  @@ -3883,7 +3383,8 @@
           </td>
   
   	<td>
  -	  <pre>  % ./configure --prefix=/usr/local/etc/httpd</pre>
  +	  <pre>  % cd apache_x.x.xx
  +  % ./configure --prefix=/usr/local/etc/httpd</pre>
           </td>
   	    
         </tr>
  @@ -3950,7 +3451,7 @@
   	  <pre>  % cd ../apache_x.x.xx
     % ./configure --prefix=/usr/local/etc/httpd \
        --activate-module=src/modules/perl/libperl.a \
  -     --activate-module=src/modules/php3/libphp3.a \
  +     --activate-module=src/modules/php4/libphp4.a \
        --enable-module=stats \
        --enable-module=rewrite
     % make</pre>
  @@ -4001,6 +3502,10 @@
       </table>
       </OL>
   <P>
  +Note: If you need to build mod_ssl as well, make sure that you add the
  +mod_ssl first.
  +
  +<P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
   <HR>
   <CENTER><H1><A NAME="mod_perl_Installation_with_the_C">mod_perl Installation with the CPAN.pm Interactive Shell</A></H1></CENTER>
  @@ -4166,8 +3671,8 @@
       </table>
       <P>
   Now we will build Apache with mod_perl enabled. Quit the <CODE>CPAN</CODE>
  -shell, or use use another terminal. Go to the Apache sources root directory
  -and run:
  +shell, or use another terminal. Go to the Apache sources root directory and
  +run:
   
   <P>
   
  @@ -5241,10 +4746,10 @@
           </td>
   
   	<td>
  -	  <pre>    /home/sbekman/lib/perl5/5.00503/i386-linux
  -    /home/sbekman/lib/perl5/5.00503
  -    /home/sbekman/lib/perl5/site_perl/5.005/i386-linux
  -    /home/sbekman/lib/perl5/site_perl/5.005</pre>
  +	  <pre>    /home/stas/lib/perl5/5.00503/i386-linux
  +    /home/stas/lib/perl5/5.00503
  +    /home/stas/lib/perl5/site_perl/5.005/i386-linux
  +    /home/stas/lib/perl5/site_perl/5.005</pre>
           </td>
   	    
         </tr>
  @@ -6477,8 +5982,7 @@
   not mod_perl.
   
   <P>
  -Also note that there is a <CODE>MOD_PERL</CODE> environment variable if you run under a mod_perl handler, it's set to the
  -release number you use.
  +Also note that there is a <CODE>MOD_PERL</CODE> environment variable if you run under a mod_perl handler, it's set to the <EM>mod_perl/x.xx</EM> string, where <EM>x.xx</EM> is the version number of mod_perl.
   
   <P>
   Based on this difference you can write code like this:
  @@ -6778,7 +6282,7 @@
   the components.
   
   <P>
  -You shouldn't worry about this when compliling Perl modules since Perl will
  +You shouldn't worry about this when compiling Perl modules since Perl will
   choose what's right automatically. Unless you override things. If you do
   that, you are on your own...
   
  @@ -6853,7 +6357,7 @@
   The server package can be easily extended with third-party modules even
   after installation. This is at least a great benefit for vendor package
   maintainers who can create an Apache core package and additional packages
  -containing extensions like PHP3, mod_perl, mod_fastcgi, etc.
  +containing extensions like PHP4, mod_perl, mod_fastcgi, etc.
   
   <P><LI>
   <P>
  @@ -6966,7 +6470,7 @@
   <td align=center valign=center>
   
   <b><font size=-1>Written by <a
  -href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 04/19/2001
  +href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 09/02/2001
   </font></b>
   <br>
   
  
  
  
  1.27      +2 -2      modperl-site/guide/intro.html
  
  Index: intro.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/intro.html,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- intro.html	2001/04/27 16:57:14	1.26
  +++ intro.html	2001/09/02 14:26:58	1.27
  @@ -607,7 +607,7 @@
   I have quoted many snippets of information from FAQs and emails, but I have
   not credited each quote in the guide individually. I did not mean to take
   the credit for myself, it's just that I tried to keep track of names, and
  -became lost, so instead of scattering credits thoughout the Guide I have
  +became lost, so instead of scattering credits throughout the Guide I have
   gathered them all together here. If you want your name to show up under
   your original quote, please tell me and I'll add it for you.
   
  @@ -917,7 +917,7 @@
   <td align=center valign=center>
   
   <b><font size=-1>Written by <a
  -href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 03/20/2001
  +href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 05/05/2001
   </font></b>
   <br>
   
  
  
  
  1.11      +5149 -5036modperl-site/guide/mod_perl_guide.pdf.gz
  
  	<<Binary file>>
  
  
  1.21      +7 -32     modperl-site/guide/modules.html
  
  Index: modules.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/modules.html,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- modules.html	2001/04/27 16:57:19	1.20
  +++ modules.html	2001/09/02 14:27:00	1.21
  @@ -261,7 +261,7 @@
   Note that it requires the <CODE>Apache::Scoreboard</CODE> module to work.
   
   <P>
  -Referer to the <CODE>Apache::Watchdog::RunAway</CODE> manpage for the configuration details.
  +Refer to the <CODE>Apache::Watchdog::RunAway</CODE> manpage for the configuration details.
   
   <P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
  @@ -444,7 +444,7 @@
         </tr>
       </table>
       <P>
  -<CODE>Apache::RegistryNG</CODE> inherits from <CODE>Apache::PerlRun</CODE>, but the <CODE>handler()</CODE> is overriden. Aside from the
  +<CODE>Apache::RegistryNG</CODE> inherits from <CODE>Apache::PerlRun</CODE>, but the <CODE>handler()</CODE> is overridden. Aside from the
   <CODE>handler(),</CODE> the rest of
   <CODE>Apache::PerlRun</CODE> contains all the functionality of
   <CODE>Apache::Registry</CODE> broken down into several subclass-able methods. These methods are used by <CODE>Apache::RegistryNG</CODE> to implement the exact same functionality of <CODE>Apache::Registry</CODE>, using the
  @@ -457,31 +457,6 @@
   performed by <CODE>Apache::Registry</CODE> on each request.
   
   <P>
  -One situation where <CODE>Apache::RegistryNG</CODE> may definitely be required is if you are rewriting URIs (using either
  -mod_rewrite or your own handler) in certain ways.
  -
  -<P>
  -For instance if you have a rewrite rule of the form:
  -
  -<P>
  -
  -    <table>
  -      <tr>
  -
  -	<td bgcolor="#eeeeee" width="1">
  -	  &nbsp;
  -        </td>
  -
  -	<td>
  -	  <pre>  XYZ123456.html  ==&gt; /perl/foo.pl?p1=XYZ&amp;p2=123456</pre>
  -        </td>
  -	    
  -      </tr>
  -    </table>
  -    <P>
  -<CODE>Apache::Registry</CODE> loses big, as it recompiles <EM>foo.pl</EM> for each unique URL -- <CODE>Apache::RegistryNG</CODE> should be used instead.
  -
  -<P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
   <HR>
   <CENTER><H1><A NAME="Apache_RegistryBB_Apache_Re">Apache::RegistryBB -- Apache::Registry Bare Bones</A></H1></CENTER>
  @@ -601,7 +576,7 @@
   <P>
   Have you ever served a huge HTML file (e.g. a file bloated with JavaScript
   code) and wondered how could you send it compressed, thus dramatically
  -cutting down the download times? After all java applets can be compressed
  +cutting down the download times? After all Java applets can be compressed
   into a jar and benefit from faster download times. Why can't we do the same
   with plain ASCII (HTML, JS etc.)? ASCII text can often be compressed by a
   factor of 10.
  @@ -728,7 +703,7 @@
         </tr>
       </table>
       <P>
  -will compess the output of the <CODE>Apache::Registry</CODE> scripts. Yes, you should use <CODE>Apache::RegistryFilter</CODE> instead of <CODE>Apache::Registry</CODE>
  +will compress the output of the <CODE>Apache::Registry</CODE> scripts. Yes, you should use <CODE>Apache::RegistryFilter</CODE> instead of <CODE>Apache::Registry</CODE>
   for it to work.
   
   <P>
  @@ -855,7 +830,7 @@
   which will load the production version of the module and it'll be used to
   process the request. If on the other hand if the request to the
   <EM>/status-dev/perl</EM> location will be issued, as configured in the former configuration section,
  -a similar thing will happen, but a different path (<EM>/home/httpd/dev/lib</EM>) will be prepanded to <CODE>@INC</CODE>:
  +a similar thing will happen, but a different path (<EM>/home/httpd/dev/lib</EM>) will be prepended to <CODE>@INC</CODE>:
   
   <P>
   
  @@ -881,7 +856,7 @@
   <CODE>PerlINC</CODE> for <CODE>@INC</CODE>. That's local to the fixup handler, so you won't actually see <CODE>@INC</CODE> changed in your script.
   
   <P>
  -Additionaly the modules with different versions can be unloaded at the end
  +In addition the modules with different versions can be unloaded at the end
   of request, using the <CODE>PerlCleanupHandler</CODE> handler:
   
   <P>
  @@ -1277,7 +1252,7 @@
   <td align=center valign=center>
   
   <b><font size=-1>Written by <a
  -href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 03/26/2001
  +href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 05/22/2001
   </font></b>
   <br>
   
  
  
  
  1.33      +37 -38    modperl-site/guide/performance.html
  
  Index: performance.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/performance.html,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- performance.html	2001/04/27 16:57:20	1.32
  +++ performance.html	2001/09/02 14:27:00	1.33
  @@ -330,7 +330,7 @@
   <HR>
   <CENTER><H1><A NAME="System_Analysis">System Analysis</A></H1></CENTER>
   <P>
  -Before we try to solve a problem we need to indentify it. In our case we
  +Before we try to solve a problem we need to identify it. In our case we
   want to get the best performance we can with as little monetary and time
   investment as possible.
   
  @@ -417,9 +417,9 @@
   we would try to show which coding approach is preferable and the you
   shouldn't try to compare the absolute results collected while running the
   same benchmarks on your machine, since you won't have the exact hardware
  -and software setup anyway. So this kind of comparisment would be
  -misleading. Compare the relative results from the tests running on your
  -machine, don't compare your absolute results with those in this Guide.
  +and software setup anyway. So this kind of comparison would be misleading.
  +Compare the relative results from the tests running on your machine, don't
  +compare your absolute results with those in this Guide.
   
   <P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
  @@ -1536,7 +1536,7 @@
   <P>
   The <CODE>Apache::VMonitor</CODE> module with help of the <CODE>GTop</CODE> module allows you to watch all your system information using your favorite
   browser from anywhere in the world without a need to telnet to your
  -machine. If you are looking at what information you can retrieve with <CODE>GTop</CODE>, you should look at <CODE>Apache::VMonitor</CODE> as it deployes a big part of the API <CODE>GTop</CODE> provides.
  +machine. If you are looking at what information you can retrieve with <CODE>GTop</CODE>, you should look at <CODE>Apache::VMonitor</CODE> as it deploys a big part of the API <CODE>GTop</CODE> provides.
   
   <P>
   If you are running a true BSD system, you may use
  @@ -1918,11 +1918,11 @@
   <P>
   In order to get the best performance it helps to get intimately familiar
   with the Operating System (OS) the web server is running on. There are many
  -OS specific things that you may be able to optimise which will improve your
  +OS specific things that you may be able to optimize which will improve your
   web server's speed, reliability and security.
   
   <P>
  -The following sections will unveal some of the most important details you
  +The following sections will reveal some of the most important details you
   should know about your OS.
   
   <P>
  @@ -1963,8 +1963,8 @@
   
   <P>
   Do not forget that if you preload most of your code at server startup, the
  -newly forked child gets ready very very fast, because it inherits most of
  -the preloaded code and the perl interpreter from the parent process.
  +newly forked child gets ready very fast, because it inherits most of the
  +preloaded code and the perl interpreter from the parent process.
   
   <P>
   During the life of the child its memory pages (which aren't really its own
  @@ -3922,7 +3922,7 @@
   end of the child code when forking. Since if you don't and there is some
   code outside the <EM>if/else block</EM>, the child process will execute it as well. But under mod_perl there is
   another nuance--you must use
  -<CODE>CORE::exit()</CODE> and not <CODE>exit()</CODE>, which would be automatically overriden by <CODE>Apache::exit()</CODE> if used in conjunction with
  +<CODE>CORE::exit()</CODE> and not <CODE>exit()</CODE>, which would be automatically overridden by <CODE>Apache::exit()</CODE> if used in conjunction with
   <CODE>Apache::Registry</CODE> and similar modules. And we want the spawned process to quit when its work
   is done, otherwise it'll just stay alive use resources and do nothing.
   
  @@ -4582,8 +4582,8 @@
   
   <P>
   If the external program is written in Perl you may pass complicated data
  -stuctures to it using one of the methods to serialize Perl data and then to
  -restore it. The <CODE>Storable</CODE> and <CODE>FreezeThaw</CODE> modules come handy. Let's say that we have program <EM>master.pl</EM> calling program
  +structures to it using one of the methods to serialize Perl data and then
  +to restore it. The <CODE>Storable</CODE> and <CODE>FreezeThaw</CODE> modules come handy. Let's say that we have program <EM>master.pl</EM> calling program
   <EM>slave.pl</EM>:
   
   <P>
  @@ -4737,7 +4737,7 @@
   <P>
   Perl's <CODE>system()</CODE> is <STRONG>not</STRONG> the <CODE>system(3)</CODE> call [C-library]. This is how the arguments to <CODE>system()</CODE> get
   interpreted. When there is a single argument to <CODE>system(),</CODE>
  -it'll be checked for for having shell metacharacters first (like <CODE>*</CODE>,<CODE>?</CODE>), and if there are any--Perl interpreter invokes a real shell program (/bin/sh&nbsp;-c on Unix platforms). If you pass a list of arguments to
  +it'll be checked for having shell metacharacters first (like <CODE>*</CODE>,<CODE>?</CODE>), and if there are any--Perl interpreter invokes a real shell program (/bin/sh&nbsp;-c on Unix platforms). If you pass a list of arguments to
   <CODE>system(),</CODE> they will be not checked for metacharacters, but
   split into words if required and passed directly to the C-level <CODE>execvp()</CODE> system call, which is more efficient. That's a <EM>very</EM> nice optimization. In other words, only if you do:
   
  @@ -5879,7 +5879,7 @@
   
   <P>
   Since keepalive connections will not incur the additional three-way TCP
  -handshake, turning it off will be kinder to the network.
  +handshake they are kinder to the network.
   
   <P>
   SSL connections benefit the most from <CODE>KeepAlive</CODE> in case you didn't configure the server to cache session ids.
  @@ -6114,7 +6114,7 @@
   average time it took to make a single <CODE>stat()</CODE> call. I'm sampling a 1M stats, so I'd get a correct average result.
   
   <P>
  -Before we actually run the script one should destinguish between two
  +Before we actually run the script one should distinguish between two
   different situation. When the server is idle the time between the first and
   the last system call will be much shorter than the same time measured on
   the loaded system. That is because on the idle system, a process can use
  @@ -6183,7 +6183,7 @@
       <P>
   You can see that the average time has doubled (about 8 microseconds). And
   this is obvious, since there were two processes competing over CPU. Now if
  -run 4 occurences of the above code:
  +run 4 occurrences of the above code:
   
   <P>
   
  @@ -7208,7 +7208,7 @@
   <P>
   Therefore assuming that the only functionality that you need is the parsing
   of the key-value pairs, and assuming that every key has a single value, we
  -will compare the following almost indentical scripts, by trying to pass
  +will compare the following almost identical scripts, by trying to pass
   various query strings.
   
   <P>
  @@ -7548,7 +7548,7 @@
   <P>
   An even better solution is to keep buffering enabled, and use a Perl API <CODE>rflush()</CODE> call to flush the buffers when needed. This way you can place the first
   part of the page that you are going to send to the user in the buffer, and
  -flush it a moment before you are going to do some lenghty operation, like a
  +flush it a moment before you are going to do some lengthy operation, like a
   DB query. So you kill two birds with one stone: you show some of the data
   to the user immediately, so she will feel that something is actually
   happening, and you have no performance hit from disabled buffering.
  @@ -7570,7 +7570,7 @@
     print $q-&gt;start_html;
     print $q-&gt;p(&quot;Searching...Please wait&quot;);
     $r-&gt;rflush;
  -    # imitate a lenghty operation
  +    # imitate a lengthy operation
     for (1..5) {
       sleep 1;
     }
  @@ -7824,10 +7824,9 @@
         </tr>
       </table>
       <P>
  -We are are interested in the 'total CPU times' and not the 'wallclock
  -seconds'. It's possible that the load on the system was different for the
  -two tests while benchmarking, so the wallclock times give us no useful
  -information.
  +We are interested in the 'total CPU times' and not the 'wallclock seconds'.
  +It's possible that the load on the system was different for the two tests
  +while benchmarking, so the wallclock times give us no useful information.
   
   <P>
   We see that the <EM>method</EM> calling type is almost twice as slow as the
  @@ -8251,7 +8250,7 @@
   <P>
   Somewhat overlapping with the previous section we want to revisit the
   various approaches of mungling with strings, and compare the speed of using
  -lists of strings compared to interpolatoin. We will add a string
  +lists of strings compared to interpolation. We will add a string
   concatenation angle as well.
   
   <P>
  @@ -8408,7 +8407,7 @@
   is true if you don't run <CODE>join()</CODE> on the list at the end to
   create a single string from the elements of list. This operation might be
   slower than direct append to the string whenever a new string springs into
  -existance.
  +existence.
   
   <P>
   [ReaderMETA]: Please send more mod_perl relevant Perl performance hints
  @@ -8836,7 +8835,7 @@
     while(@row_ary  = $sth-&gt;fetchrow_array) {
           # do DB accumulation into some variable
     }
  -  # print the output using the the data returned from the DB</pre>
  +  # print the output using the data returned from the DB</pre>
           </td>
   	    
         </tr>
  @@ -9176,8 +9175,8 @@
   <P>
   If you don't want to set this limit by default but only for those requests
   that are likely to get the memory unshared. In this case the memory size
  -testing would be be done only if you decide that you want it. You register
  -the post-processing check by using the <CODE>set_min_shared_size()</CODE>
  +testing would be done only if you decide that you want it. You register the
  +post-processing check by using the <CODE>set_min_shared_size()</CODE>
   function. For example:
   
   <P>
  @@ -9414,8 +9413,8 @@
   environment variable <CODE>PERL_RLIMIT_CPU</CODE> defines the maximum amount of CPU time the process can use. If it runs for
   longer than this, it gets killed, no matter what it does, either processing
   a new request or just waiting. This is very useful when you have a code
  -with a bug and the process starts to spin in an endless loop or alike using
  -a lot of CPU and never completing the request. 
  +with a bug and the process starts to spin in an infinite loop or alike
  +using a lot of CPU and never completing the request. 
   
   <P>
   META: verify this.
  @@ -9718,9 +9717,9 @@
   maintain persistent open database connections.
   
   <P>
  -You want to have a persistent database connection because the the most
  +You want to have a persistent database connection because the most
   expensive part of a network transaction for most databases is the business
  -of building and tearning down connections.
  +of building and tearing down connections.
   
   <P>
   Of course the persistence doesn't help with the latency problems during the
  @@ -10413,7 +10412,7 @@
   <CENTER><H1><A NAME="Upload_and_Download_of_Big_Files">Upload and Download of Big Files</A></H1></CENTER>
   <P>
   You don't want to tie up your precious mod_perl backend server children
  -doing something as long and simple as transfering a file, especially a big
  +doing something as long and simple as transferring a file, especially a big
   one. The overhead saved by mod_perl is typically under one second, which is
   an enormous saving for the scripts whose run time is under one second. The
   user won't really see any important performance benefits from mod_perl,
  @@ -10479,7 +10478,7 @@
   
   
   
  -<P><LI><STRONG><A NAME="item_Minumum">Minumum</A></STRONG>
  +<P><LI><STRONG><A NAME="item_Minimum">Minimum</A></STRONG>
   <P>
   
       <table>
  @@ -10556,7 +10555,7 @@
   	<td>
   	  <pre>  Build group    httpd size (bytes)  Difference
     ---------------------------------------------
  -  Minumum              892928         +     0
  +  Minimum              892928         +     0
     Default              994316         +101388
     Everything          1044432         +151504
     Everything+Debug    1162100         +269172</pre>
  @@ -10566,7 +10565,7 @@
       </table>
       <P>
   Indeed when you strip most of the default things, the server size is
  -slimmer. But the savings are insignificant since you don't muliply the
  +slimmer. But the savings are insignificant since you don't multiply the
   added size by the number of child processes if your OS supports sharing
   memory. The parent processes is a little bigger, but it shares these memory
   pages with its child processes. Of course not everything will be shared, if
  @@ -10603,7 +10602,7 @@
   Newer Perl versions also have build time options to reduce runtime memory
   consumption. These options might shrink the size of your httpd by about
   150k -- quite a big number if you remember to multiply it by the number of
  -chidren you use.
  +children you use.
   
   <P>
   The <CODE>-DTWO_POT_OPTIMIZE</CODE> macro improves allocations of data with size close to a power of two; but
  @@ -10795,7 +10794,7 @@
   <td align=center valign=center>
   
   <b><font size=-1>Written by <a
  -href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 04/28/2001
  +href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 06/19/2001
   </font></b>
   <br>
   
  
  
  
  1.19      +8 -8      modperl-site/guide/perl.html
  
  Index: perl.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/perl.html,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- perl.html	2001/04/27 16:57:20	1.18
  +++ perl.html	2001/09/02 14:27:00	1.19
  @@ -652,7 +652,7 @@
   
   <P>
   Whilst global variables are useful for sharing data and are necessary in
  -some contexts it is usually wisest to minimise their use and use <EM>lexical
  +some contexts it is usually wisest to minimize their use and use <EM>lexical
   variables</EM>, discussed next, instead.
   
   <P>
  @@ -3394,7 +3394,7 @@
   the enclosing scope. In the mod_perl situation where the child server
   doesn't usually exit, if in one of your scripts you modify a global
   variable it will be changed for the rest of the process' life and will
  -affect all the scripts executed by the same process. Therefore localising
  +affect all the scripts executed by the same process. Therefore localizing
   these variables is highly recommended, I'd say mandatory.
   
   <P>
  @@ -3830,7 +3830,7 @@
     eval {                           try {
       # execute here                   // execute here
       # raise our own exception:       // raise our own exception:
  -    die &quot;Oops&quot; if /error/;           if(oops==1){throw Exception.Oops;}
  +    die &quot;Oops&quot; if /error/;           if(error==1){throw Exception.Oops;}
       # execute more                   // execute more
     } ;                              }
     if($@) {                         catch {
  @@ -3934,7 +3934,7 @@
       <P>
   Which isn't quite what you would expect, especially if that
   <CODE>$SIG{__DIE__}</CODE> handler is hidden away deep in some other module that you didn't know
  -about. There are work arounds however. One is to localise <CODE>$SIG{__DIE__}</CODE> in every exception trap you write:
  +about. There are work arounds however. One is to localize <CODE>$SIG{__DIE__}</CODE> in every exception trap you write:
   
   <P>
   
  @@ -4004,9 +4004,9 @@
   exception handler to de-construct that string into something meaningful
   (unless of course all you want your exception handler to do is dump the
   error to the browser). The other problem is that you have no way of
  -automatically detecting where the exception occured using <CODE>eval{}</CODE> construct. In a <CODE>$SIG{__DIE__}</CODE>
  +automatically detecting where the exception occurred using <CODE>eval{}</CODE> construct. In a <CODE>$SIG{__DIE__}</CODE>
   block you always have the use of the <CODE>caller()</CODE> function to
  -detect where the error occured. But we can fix that...
  +detect where the error occurred. But we can fix that...
   
   <P>
   A little known fact about exceptions in perl 5.005 is that you can call die
  @@ -4039,7 +4039,7 @@
   you need to change your script to have some sort of global exception
   handling. This is much more trivial than it sounds. If you're using <CODE>Apache::Registry</CODE> to emulate CGI you might consider wrapping your entire script in one big
   eval block, but I would discourage that. A better method would be to
  -modularise your script into discrete function calls, one of which should be
  +modularize your script into discrete function calls, one of which should be
   a dispatch routine:
   
   <P>
  @@ -4686,7 +4686,7 @@
   <td align=center valign=center>
   
   <b><font size=-1>Written by <a
  -href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 04/10/2001
  +href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 06/09/2001
   </font></b>
   <br>
   
  
  
  
  1.34      +75 -22    modperl-site/guide/porting.html
  
  Index: porting.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/porting.html,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- porting.html	2001/04/27 16:57:20	1.33
  +++ porting.html	2001/09/02 14:27:00	1.34
  @@ -198,8 +198,8 @@
   using the mod_perl API in first place. This will make your application a
   little bit more efficient and it will be easier to use the full mod_perl
   feature set, which extends the core Perl functionality with Apache specific
  -functions and overriden Perl core functions that were reimplemented to work
  -better in mod_perl environment.
  +functions and overridden Perl core functions that were reimplemented to
  +work better in mod_perl environment.
   
   <P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
  @@ -213,8 +213,8 @@
   This chapter relies on a certain level of Perl knowledge. Please read
   through the <A HREF="././perl.html#">Perl Reference</A> chapter and make sure you know the material covered there. This will allow
   me to concentrate on pure mod_perl issues and make them more prominent to
  -the experinced Perl programmer, which would otherwise be lost in the sea of
  -Perl background notes.
  +the experienced Perl programmer, which would otherwise be lost in the sea
  +of Perl background notes.
   
   <P>
   Additional resources:
  @@ -1351,6 +1351,56 @@
   multiple packages that all use pseudo-hashes.
   
   <P>
  +Also if you have modules loaded from directories which are not in
  +<CODE>@INC</CODE>, <CODE>Apache::Reload</CODE> will fail to find the files, due the fact that <CODE>@INC</CODE> is reset to its original value even if it gets temporary modified in the
  +script. The solution is to extend <CODE>@INC</CODE> at the server startup to include directories you load the files from which
  +aren't in <CODE>@INC</CODE>.
  +
  +<P>
  +For example, if you have a script which loads <EM>MyTest.pm</EM> from
  +<EM>/home/stas/myproject</EM>:
  +
  +<P>
  +
  +    <table>
  +      <tr>
  +
  +	<td bgcolor="#eeeeee" width="1">
  +	  &nbsp;
  +        </td>
  +
  +	<td>
  +	  <pre>  use lib qw(/home/stas/myproject);
  +  require MyTest;</pre>
  +        </td>
  +	    
  +      </tr>
  +    </table>
  +    <P>
  +<CODE>Apache::Reload</CODE> won't find this file, unless you alter <CODE>@INC</CODE> in
  +<EM>startup.pl</EM> (or <EM>httpd.conf</EM>):
  +
  +<P>
  +
  +    <table>
  +      <tr>
  +
  +	<td bgcolor="#eeeeee" width="1">
  +	  &nbsp;
  +        </td>
  +
  +	<td>
  +	  <pre>  startup.pl
  +  ----------
  +  use lib qw(/home/stas/myproject);</pre>
  +        </td>
  +	    
  +      </tr>
  +    </table>
  +    <P>
  +and restart the server. Now the problem is solved.
  +
  +<P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
   <HR>
   <CENTER><H3><A NAME="Availability">Availability</A></H3></CENTER>
  @@ -2108,8 +2158,8 @@
   <P>
   We use <CODE>do()</CODE> to reload the code in this file and not
   <CODE>require()</CODE> because while <CODE>do()</CODE> behaves almost
  -indentically to <CODE>require(),</CODE> it reloads the file
  -unconditionally. If <CODE>do()</CODE> cannot read the file, it returns
  +identically to <CODE>require(),</CODE> it reloads the file unconditionally.
  +If <CODE>do()</CODE> cannot read the file, it returns
   <CODE>undef</CODE> and sets <CODE>$!</CODE> to report the error. If <CODE>do()</CODE> can read the file but cannot
   compile it, it returns <CODE>undef</CODE> and sets an error message in <CODE>$@</CODE>. If the file is successfully compiled, <CODE>do()</CODE> returns the value
   of the last expression evaluated.
  @@ -2132,7 +2182,7 @@
   the configuration if it was changed. This is fail-safe, because if
   something goes wrong we just return without modifying the server
   configuration. The script should not be used to initialize the variables on
  -its first invocation. To do that, you would need to replace each occurence
  +its first invocation. To do that, you would need to replace each occurrence
   of <CODE>return()</CODE> and <CODE>warn()</CODE> with <CODE>die().</CODE>
   If you do that, take a look at the section ``<A HREF="././snippets.html#Redirecting_Errors_to_the_Client">Redirecting Errors to the Client instead of error_log</A>''.
   
  @@ -2191,8 +2241,8 @@
       </table>
       <P>
   Remember that you should be using <CODE>(stat $file)[9]</CODE> instead of <CODE>-M
  -$file</CODE> if you are modifying the <CODE>$^M</CODE> variable. In some of my scripts, I reset <CODE>$^M</CODE> to the time of the script invocation with
  -<CODE>&quot;$^M = time()&quot;</CODE>. That way I can perform <CODE>-M</CODE> and the similar (<CODE>-A</CODE>, <CODE>-C</CODE>) file status tests relative to the script invocation time, and not the
  +$file</CODE> if you are modifying the <CODE>$^T</CODE> variable. In some of my scripts, I reset <CODE>$^T</CODE> to the time of the script invocation with
  +<CODE>&quot;$^T = time()&quot;</CODE>. That way I can perform <CODE>-M</CODE> and the similar (<CODE>-A</CODE>, <CODE>-C</CODE>) file status tests relative to the script invocation time, and not the
   time the process was started.
   
   <P>
  @@ -2281,7 +2331,7 @@
   
   <P>
   The dynamically updated variables are duplicated, they will be in the main
  -file and in the dynamic file. We do this to simplify maintainance. When a
  +file and in the dynamic file. We do this to simplify maintenance. When a
   new release is installed the dynamic configuration file won't exist at all.
   It will be created only after the first update. As we just saw, the only
   change in the main code is to add a snippet to load this file if it exists
  @@ -2401,7 +2451,7 @@
       foreach (keys %updates) {
         print &quot;&lt;DT&gt;&lt;B&gt;$_&lt;/B&gt; =&gt; &lt;PRE&gt;$updates{$_}&lt;/PRE&gt;&quot;;
     
  -      # now we have to handle each var to be changed very very carefully
  +      # now we have to handle each var to be changed very carefully
         # since this file goes immediately into production!
         $malformatted{$_} = delete $updates{$_}
           unless $validation_rules{$_}-&gt;($updates{$_});
  @@ -3377,7 +3427,7 @@
   Perl cuts everything after the <CODE>__END__</CODE> tag. The same applies to the <CODE>__DATA__</CODE> tag.
   
   <P>
  -Also, rememeber that whatever applies to <CODE>Apache::Registry</CODE> scripts, in most cases applies to <CODE>Apache::PerlRun</CODE> scripts.
  +Also, remember that whatever applies to <CODE>Apache::Registry</CODE> scripts, in most cases applies to <CODE>Apache::PerlRun</CODE> scripts.
   
   <P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
  @@ -3410,8 +3460,8 @@
   fork at all if you can avoid it. See the ``<A HREF="././performance.html#Forking_and_Executing_Subprocess">Forking or Executing subprocesses from mod_perl</A>'' section to learn about implications of forking.
   
   <P>
  -Also read about <A HREF="././modules.html#Apache_SubProcess">Apache::SubProcess</A> for overriden <CODE>system()</CODE> and <CODE>exec()</CODE> implementations
  -that work with mod_perl.
  +Also read about <A HREF="././modules.html#Apache_SubProcess">Apache::SubProcess</A> for overridden <CODE>system()</CODE> and <CODE>exec()</CODE>
  +implementations that work with mod_perl.
   
   <P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
  @@ -3432,6 +3482,9 @@
   ("&nbsp;"&nbsp;x&nbsp;80) for right-justifying.
   
   <P>
  +Another alternative is to use the <CODE>Text::Reform</CODE> module.
  +
  +<P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
   <HR>
   <CENTER><H1><A NAME="Terminating_requests_and_process">Terminating requests and processes, the exit() and child_terminate() functions</A></H1></CENTER>
  @@ -4448,7 +4501,7 @@
   Let's make our smart method more elaborate with respect to the
   <CODE>PerlSendHeader</CODE> directive, so that it always does the right thing. It's especially
   important if you write an application that you are going to distribute,
  -hopefully under one of the Open Source or GPL licences.
  +hopefully under one of the Open Source or GPL licenses.
   
   <P>
   You can continue to improve this subroutine even further to handle
  @@ -4877,7 +4930,7 @@
   <HR>
   <CENTER><H2><A NAME="Other_switches">Other switches</A></H2></CENTER>
   <P>
  -Finally, if you still need to to set additional perl startup flags such as <CODE>-d</CODE> and <CODE>-D</CODE>, you can use an environment variable
  +Finally, if you still need to set additional perl startup flags such as <CODE>-d</CODE> and <CODE>-D</CODE>, you can use an environment variable
   <CODE>PERL5OPT</CODE>. Switches in this variable are treated as if they were on every Perl
   command line.
   
  @@ -4993,7 +5046,7 @@
   <P>
   <CODE>%ENV</CODE> is only set up for CGI emulation. If you are using the API, you should use <CODE>$r-&gt;subprocess_env</CODE>, <CODE>$r-&gt;notes</CODE> or
   <CODE>$r-&gt;pnotes</CODE> for passing data around between handlers. <CODE>%ENV</CODE> is slow because it must update the underlying C environment table. It also
  -insecure sinve its use exposes the data on systems which allow users to see
  +insecure since its use exposes the data on systems which allow users to see
   the environment with <CODE>ps</CODE>.
   
   <P>
  @@ -5586,7 +5639,7 @@
     
     #################
     sub print_header{
  -      # prepare a cooke
  +      # prepare a cookie
       my $c = CGI::Cookie-&gt;new
         ('-name'    =&gt; 'sessionID',
          '-value'   =&gt; $sessionID,
  @@ -5636,7 +5689,7 @@
       </table>
       <P>
   The code is very simple. It creates a session if you've pressed the
  -<EM>'Start'</EM> button or deletes it if you've pressed the the <EM>'Stop'</EM>
  +<EM>'Start'</EM> button or deletes it if you've pressed the <EM>'Stop'</EM>
   button. The session is stored and retrieved using the cookies technique.
   
   <P>
  @@ -5952,7 +6005,7 @@
   The one last thing we should do is to add <CODE>1;</CODE> at the end of the module, just like with any Perl module, so <CODE>PerlModule</CODE> will not fail when it tries to load <CODE>Test::Cookie</CODE>.
   
   <P>
  -So to summarise, we took the original script's code and added the following
  +So to summarize, we took the original script's code and added the following
   eight lines:
   
   <P>
  @@ -6141,7 +6194,7 @@
     
     #################
     sub print_header{
  -      # prepare a cooke
  +      # prepare a cookie
       my $c = Apache::Cookie-&gt;new
         ($r,
          -name    =&gt; 'sessionID',
  @@ -6361,7 +6414,7 @@
   <td align=center valign=center>
   
   <b><font size=-1>Written by <a
  -href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 04/17/2001
  +href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 08/01/2001
   </font></b>
   <br>
   
  
  
  
  1.32      +13 -13    modperl-site/guide/scenario.html
  
  Index: scenario.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/scenario.html,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- scenario.html	2001/04/27 16:57:20	1.31
  +++ scenario.html	2001/09/02 14:27:01	1.32
  @@ -162,8 +162,8 @@
   <HR>
   <CENTER><H2><A NAME="Installation_in_10_lines">Installation in 10 lines</A></H2></CENTER>
   <P>
  -The Installation is very very simple. This example shows installation on
  -the Linux operating system.
  +The Installation is very simple. This example shows installation on the
  +Linux operating system.
   
   <P>
   
  @@ -977,7 +977,7 @@
   <EM>httpd.conf</EM> now will be called <EM>httpd_docs.conf</EM>.
   
   <P>
  -We will leave the decision making about the preffered configuration and
  +We will leave the decision making about the preferred configuration and
   installation way to the reader. In the rest of the guide we will continue
   using the regular names resulted from using the standard configuration and
   the manual executable name adjustment as described at the beginning of this
  @@ -1378,7 +1378,7 @@
   Squid). The client never sees the other ports and never knows that there
   might be more than one server running. Do not confuse this scenario with <CODE>mod_rewrite</CODE>, where a server redirects the request somewhere according to the rewrite
   rules and forgets all about it. (i.e. works as a one way dispatcher, which
  -dispatches the jobs but is not responsible fo
  +dispatches the jobs but is not responsible for.)
   
   <P>
   Squid can be used as a straightforward proxy server. ISPs and other
  @@ -1529,7 +1529,7 @@
   <P>
   What are they for? If you set the headers correctly, there is no need to
   tell the Squid accelerator <STRONG>NOT</STRONG> to try to cache anything. Squid will not bother your mod_perl servers a
  -second time if a request is (a) cachable and (b) still in the cache. Many
  +second time if a request is (a) cacheable and (b) still in the cache. Many
   mod_perl applications will produce identical results on identical requests
   if not much time has elapsed between the requests. So your Squid might have
   a hit ratio of 50%, which means that the mod_perl servers will have only
  @@ -1624,7 +1624,7 @@
   during <CODE>PUT</CODE> and <CODE>POST</CODE> requests. A user who attempts to send a request with a body larger than
   this limit receives an ``Invalid Request'' error message. If you set this
   parameter to a zero, there will be no limit imposed. If you are using <CODE>POST</CODE> to upload files, then set this to the largest file's size plus a few extra
  -kbytes.
  +KB.
   
   <P>
   
  @@ -2048,7 +2048,7 @@
   significant in some installations.
   
   <P>
  -So on for production servers I have decided to to stick with the Squid,
  +So on for production servers I have decided to stick with the Squid,
   httpd_docs and httpd_perl scenario, where I can optimize and fine tune
   everything. But if in your case there is almost no static objects to serve,
   the httpd_docs server is definitely redundant. And all you need are the
  @@ -2063,7 +2063,7 @@
   nor <CODE>Listen</CODE> directives in <EM>httpd.conf</EM>.
   
   <P>
  -The modified configuration for this simlified setup (see the explanations
  +The modified configuration for this simplified setup (see the explanations
   in the previous section):
   
   <P>
  @@ -2386,11 +2386,11 @@
   <P>
   The problem I don't know is, does the call to close the socket wait, until
   all data is actually send successfully or not. If it doesn't wait, you may
  -not be noticed of any failure, but because the proxing Apache can write as
  +not be noticed of any failure, but because the proxying Apache can write as
   fast to the socket transmission buffer as it can read, it should be
  -possible that the proxing Apache copies all the data from the receive to
  +possible that the proxying Apache copies all the data from the receive to
   the transmission buffer and after that releasing the receive buffer, so the
  -mod_perl Apache is free to do other things, while the proxing Apache still
  +mod_perl Apache is free to do other things, while the proxying Apache still
   wait until the client returns the success of data transmission. (The last,
   is the part I am not sure on)
   
  @@ -3076,7 +3076,7 @@
   beginning of the relative URI (e.g. <EM>/perl</EM>). What should you do if you want everything, but files with extensions
   like <EM>.gif</EM>, <EM>.cgi</EM>
   and similar, to be proxypassed to the mod_perl server. These files are to
  -to be served by the light Apache server which carries the mod_proxy module.
  +be served by the light Apache server which carries the mod_proxy module.
   
   <P>
   The following example rewrites everything to the mod_perl server. It
  @@ -3343,7 +3343,7 @@
   <td align=center valign=center>
   
   <b><font size=-1>Written by <a
  -href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 03/11/2001
  +href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 05/05/2001
   </font></b>
   <br>
   
  
  
  
  1.30      +28 -4     modperl-site/guide/snippets.html
  
  Index: snippets.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/snippets.html,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- snippets.html	2001/04/27 16:57:21	1.29
  +++ snippets.html	2001/09/02 14:27:01	1.30
  @@ -39,6 +39,7 @@
   	<LI><A HREF="#Redirecting_POST_Requests">Redirecting POST Requests</A>
   	<LI><A HREF="#Redirecting_While_Maintaining_En">Redirecting While Maintaining Environment Variables</A>
   	<LI><A HREF="#Terminating_a_Child_Process_on_R">Terminating a Child Process on Request Completion</A>
  +	<LI><A HREF="#Setting_Content_type_and_Content">Setting Content-type and Content-encoding headers in non-OK responses</A>
   	<LI><A HREF="#More_on_Relative_Paths">More on Relative Paths</A>
   	<LI><A HREF="#Watching_the_error_log_File_With">Watching the error_log File Without Telneting to the Server</A>
   	<LI><A HREF="#Accessing_Variables_from_the_Cal">Accessing Variables from the Caller's Package</A>
  @@ -287,7 +288,7 @@
     
         $message = qq{
                     Have you tried to upload an image in the wrong way?&lt;P&gt;
  -                  To sucessfully upload an image you must use a browser that supports
  +                  To successfully upload an image you must use a browser that supports
                     image upload and use the 'Browse' button to select that image.
                     DO NOT type the path to the image into the upload field.&lt;P&gt;
                     Thank you!
  @@ -567,6 +568,29 @@
   <P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
   <HR>
  +<CENTER><H1><A NAME="Setting_Content_type_and_Content">Setting Content-type and Content-encoding headers in non-OK responses</A></H1></CENTER>
  +<P>
  +You cannot set <EM>Content-type</EM> and <EM>Content-encoding</EM> headers in non-OK responses, since Apache overrides these in <EM>http_protocol.c</EM>,
  +<EM>ap_send_error_response()</EM>:
  +
  +<P>
  +
  +    <table>
  +      <tr>
  +
  +	<td bgcolor="#eeeeee" width="1">
  +	  &nbsp;
  +        </td>
  +
  +	<td>
  +	  <pre>  r-&gt;content_type = &quot;text/html; charset=iso-8859-1&quot;;</pre>
  +        </td>
  +	    
  +      </tr>
  +    </table>
  +    <P>
  +[ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
  +<HR>
   <CENTER><H1><A NAME="More_on_Relative_Paths">More on Relative Paths</A></H1></CENTER>
   <P>
   Many people use relative paths for <CODE>require</CODE>, <CODE>use</CODE>, etc., and when they open files in their scripts they make assumptions
  @@ -811,7 +835,7 @@
   
   	<td>
   	  <pre>  sub get_cookies {
  -      # cookies are seperated by a semicolon and a space, this will
  +      # cookies are separated by a semicolon and a space, this will
         # split them and return a hash of cookies
       local(@rawCookies) = split (/; /,$ENV{'HTTP_COOKIE'});
       local(%cookies);
  @@ -1266,7 +1290,7 @@
   <P>
   The most efficient approach is to talk directly to the SMTP server. Luckily <CODE>Net::SMTP</CODE> modules makes this very easy. The only problem is when &lt;Net::SMTP&gt; fails to deliver the mail, because the destination peer
   server is temporarily down. But from the other side <CODE>Net::SMTP</CODE>
  -allows you to send email much much faster, since you don't have to invoke a
  +allows you to send email much faster, since you don't have to invoke a
   dedicated process. Here is an example of a subroutine that sends email.
   
   <P>
  @@ -2338,7 +2362,7 @@
   <td align=center valign=center>
   
   <b><font size=-1>Written by <a
  -href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 03/21/2001
  +href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 08/01/2001
   </font></b>
   <br>
   
  
  
  
  1.27      +3 -3      modperl-site/guide/start.html
  
  Index: start.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/start.html,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- start.html	2001/04/27 16:57:21	1.26
  +++ start.html	2001/09/02 14:27:01	1.27
  @@ -90,10 +90,10 @@
   <A HREF="././strategy.html#">Picking the Right Strategy</A> chapter.
   
   <P>
  -The <A HREF="././install.html#">Server Installation</A> chapter follows on from the <A HREF="././scenario.html#">Real World Scenarios Implementaion</A> chapter by providing more in-depth installation details.
  +The <A HREF="././install.html#">Server Installation</A> chapter follows on from the <A HREF="././scenario.html#">Real World Scenarios Implementation</A> chapter by providing more in-depth installation details.
   
   <P>
  -The <A HREF="././config.html#">Server Configuration</A> chapter adds to the basic configurations presented in the <A HREF="././scenario.html#">Real World Scenarios Implementaion</A> chapter with extended configurations and various configuration examples.
  +The <A HREF="././config.html#">Server Configuration</A> chapter adds to the basic configurations presented in the <A HREF="././scenario.html#">Real World Scenarios Implementation</A> chapter with extended configurations and various configuration examples.
   
   <P>
   The <A HREF="././frequent.html#">Frequent mod_perl problems</A> chapter is a collection of links to other chapters. It is an attempt to
  @@ -257,7 +257,7 @@
   <td align=center valign=center>
   
   <b><font size=-1>Written by <a
  -href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 06/20/2000
  +href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 05/05/2001
   </font></b>
   <br>
   
  
  
  
  1.20      +8 -8      modperl-site/guide/strategy.html
  
  Index: strategy.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/strategy.html,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- strategy.html	2001/04/27 16:57:21	1.19
  +++ strategy.html	2001/09/02 14:27:01	1.20
  @@ -52,7 +52,7 @@
   		<LI><A HREF="#Apache_s_mod_proxy">Apache's mod_proxy</A>
   	</UL>
   
  -	<LI><A HREF="#When_One_Machine_is_not_Enough_f">When One Machine is not Enough for RDBMS DataBase and mod_perl</A>
  +	<LI><A HREF="#When_One_Machine_is_not_Enough_f">When One Machine is not Enough for RDBMS Database and mod_perl</A>
   	<UL>
   
   		<LI><A HREF="#Servers_Requirements">Servers' Requirements</A>
  @@ -239,7 +239,7 @@
   <CENTER><H1><A NAME="Alternative_architectures_for_ru">Alternative architectures for running one and two servers</A></H1></CENTER>
   <P>
   The next part of this chapter discusses the pros and the cons of each of
  -these presented configurations.  <A HREF="././scenario.html#">Real World Scenarios Implementaion</A> describes the implementation techniques of these schemes.
  +these presented configurations.  <A HREF="././scenario.html#">Real World Scenarios Implementation</A> describes the implementation techniques of these schemes.
   
   <P>
   We will look at the following installations:
  @@ -607,7 +607,7 @@
   
   <P>
   But you know that nowadays scripts often return pages which are blown up
  -with javascript code and similar, which can make them 100kb size and the
  +with JavaScript code and similar, which can make them 100kb size and the
   download time will be of the order of... (This calculation is left to you
   as an exercise :)
   
  @@ -885,7 +885,7 @@
   <P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
   <HR>
  -<CENTER><H1><A NAME="When_One_Machine_is_not_Enough_f">When One Machine is not Enough for RDBMS DataBase and mod_perl</A></H1></CENTER>
  +<CENTER><H1><A NAME="When_One_Machine_is_not_Enough_f">When One Machine is not Enough for RDBMS Database and mod_perl</A></H1></CENTER>
   <P>
   Imagine a scenario where you start your business as a small service
   providing web-site. After a while your business becomes very popular and at
  @@ -945,12 +945,12 @@
   The client, who will see the data on its screen and can give instructions
   to modify or process the data. In our case, an Internet browser.
   
  -<P><LI><STRONG>Tier 1</STRONG>
  +<P><LI><STRONG><A NAME="item_Tier">Tier 2</A></STRONG>
   <P>
   The application server, which does the actual processing of the data and
   sends it back to the client. In our case, a mod_perl enabled Apache server.
   
  -<P><LI><STRONG>Tier 1</STRONG>
  +<P><LI><STRONG><A NAME="item_Tier">Tier 3</A></STRONG>
   <P>
   The database server, which stores and retrieves all the data for the
   application server.
  @@ -1345,7 +1345,7 @@
   second set needs 11MBytes (7MB shared and 4MB unshared).
   
   <P>
  -Lets compare this new requirement with our original 50:50 setup (qhere we
  +Lets compare this new requirement with our original 50:50 setup (here we
   have assigned the same number of clients for each code set).
   
   <P>
  @@ -1550,7 +1550,7 @@
   <td align=center valign=center>
   
   <b><font size=-1>Written by <a
  -href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 04/04/2001
  +href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 07/25/2001
   </font></b>
   <br>
   
  
  
  
  1.12      +10 -10    modperl-site/guide/troubleshooting.html
  
  Index: troubleshooting.html
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/troubleshooting.html,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- troubleshooting.html	2001/04/27 16:57:21	1.11
  +++ troubleshooting.html	2001/09/02 14:27:01	1.12
  @@ -199,7 +199,7 @@
   <EM>&lt;perlroot&gt;/&lt;version&gt;/&lt;architecture&gt;/CORE</EM>. For example in <EM>/usr/local/lib/perl5/5.00503/sun4-solaris/CORE</EM>.
   
   <P>
  -Then make sure that that directory is included in the environment variable <CODE>LD_LIBRARY_PRELOAD</CODE>. Under normal circumstances, Apache should have the path configured at
  +Then make sure that directory is included in the environment variable <CODE>LD_LIBRARY_PRELOAD</CODE>. Under normal circumstances, Apache should have the path configured at
   compile time, but this way you can override the library path.
   
   <P>
  @@ -232,8 +232,8 @@
       </table>
       <P>
   On BSD style filesystems <CODE>LD_LIBRARY_PATH</CODE> is not searched for setuid programs (a.k.a., Apache). This isn't a problem
  -for CGIs since they don't do a setuid (and are forked off), but Apache
  -does, and mod_perl is in Apache. Therefore the first solution is to
  +for CGI script since they don't do a setuid (and are forked off), but
  +Apache does, and mod_perl is in Apache. Therefore the first solution is to
   explicitly load the library from the system wide <EM>ldconfig</EM> configuration file:
   
   <P>
  @@ -269,7 +269,7 @@
   <P>
   (my_oracle_home) is, of course, the home path to your oracle installation.
   In particular, the file libclntsh.so.8.0 should exist in that directory.
  -(If you use cpan, the build directory for DBD::Oracle should be in
  +(If you use CPAN, the build directory for DBD::Oracle should be in
   ~/.cpan/build/DBD-Oracle-1.06/ if you're logged in as root.)
   
   <P>
  @@ -328,7 +328,7 @@
         </tr>
       </table>
       <P>
  -in your config file.
  +in your <EM>httpd.conf</EM>.
   
   <P>
   This can also happen when you try to run a non-mod_perl Apache server using
  @@ -921,7 +921,7 @@
   Why the looping?
   
   <P>
  -Perl can get <EM>very</EM> confused inside an endless loop in your code. It doesn't necessarily mean
  +Perl can get <EM>very</EM> confused inside an infinite loop in your code. It doesn't necessarily mean
   that your code did call <CODE>exit()</CODE>. Perl's malloc went haywire and called <CODE>croak()</CODE>, but no memory is left to properly report the error, so Perl is stuck in a
   loop writing that same message to stderr.
   
  @@ -980,7 +980,7 @@
       <P>
   If you compile with that option and add '<CODE>use Apache::Debug level
   =&gt; 4;</CODE>' to your PerlScript, it will allocate the <CODE>$^M</CODE> emergency pool and the <CODE>$SIG{__DIE__}</CODE> handler will call <CODE>Carp::confess</CODE>, giving you a stack trace which should reveal where the problem is. See
  -the <CODE>Apache::Resource</CODE> module for prevention of spinning httpds.
  +the <CODE>Apache::Resource</CODE> module for ways to control httpd processes.
   
   <P>
   Note that Perl 5.005 and later have <CODE>PERL_EMERGENCY_SBRK</CODE> turned on by default.
  @@ -1193,13 +1193,13 @@
   Besides that, it flushes the <CODE>Apache::Registry</CODE> cache, and empties any dynamic stacked handlers (e.g. <CODE>PerlChildInitHandler</CODE>).
   
   <P>
  -Lots of SegFaults and other problems were reported by users who had turned <CODE>PerlFreshRestart</CODE>  <STRONG>On</STRONG>. Most of them have gone away when it was turned off. It doesn't mean that
  +Lots of Segfaults and other problems were reported by users who had turned <CODE>PerlFreshRestart</CODE>  <STRONG>On</STRONG>. Most of them have gone away when it was turned off. It doesn't mean that
   you shouldn't use it, if it works for you. Just beware of the dragons...
   
   <P>
   Note that if you have mod_perl enabled Apache built as DSO and you restart
   it, the whole Perl interpreter is completely torn down (perl_destruct())and
  -restarted. The value of <CODE>PerlFreshRestart</CODE> is irrelevent at this point.
  +restarted. The value of <CODE>PerlFreshRestart</CODE> is irrelevant at this point.
   
   <P>
   [ <B><FONT SIZE=-1><A HREF="#toc">TOC</A></FONT></B> ]
  @@ -1387,7 +1387,7 @@
   <td align=center valign=center>
   
   <b><font size=-1>Written by <a
  -href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 03/29/2001
  +href="help.html#Contacting_me">Stas Bekman</a>.<br> Last Modified at 05/07/2001
   </font></b>
   <br>
   
  
  
  
  1.2       +1 -1      modperl-site/guide/code/lwp-bench.pl
  
  Index: lwp-bench.pl
  ===================================================================
  RCS file: /home/cvs/modperl-site/guide/code/lwp-bench.pl,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- lwp-bench.pl	2000/12/02 12:44:42	1.1
  +++ lwp-bench.pl	2001/09/02 14:27:03	1.2
  @@ -115,7 +115,7 @@
         "Total Requests"  => "$nof_requests_total",
         "Parallel Agents" => $nof_parallel_connections,
         "Succeeded"       => sprintf("$succeeded (%.2f%%)\n",
  -				   $succeeded * 100 / $nof_requests_total),
  +				   $succeeded * 100 / ($nof_requests_total * @urls) ),
         "Errors"          => $errors,
         "Total Time"      => sprintf("%.2f secs\n", $total_time),
         "Throughput"      => sprintf("%.2f Requests/sec\n",