Errata

CGI Programming on the World Wide Web

Errata for CGI Programming on the World Wide Web

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".

The following errata were submitted by our customers and approved as valid errors by the author or editor.

Color key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted By Date submitted Date corrected
Printed
Page 11
The backquotes/backtics are backwards. The line

$uptime = '/usr/ucb/uptime';

should be:

$uptime = `/usr/ucb/uptime`;

Anonymous   
Printed
Page 11
The backquotes/backtics are backwards. The line

$uptime = '/usr/ucb/uptime';

should be:

$uptime = `/usr/ucb/uptime`;

Anonymous   
Printed
Page 20
The lines

$host_address = "bu.edu";
$ip_address = "128.197";

should read:

$host_address = 'bu.edu';
$ip_address = '128.197';

We need single quotes to preserve the backslashes.

Anonymous   
Printed
Page 20
The lines

$host_address = "bu.edu";
$ip_address = "128.197";

should read:

$host_address = 'bu.edu';
$ip_address = '128.197';

We need single quotes to preserve the backslashes.

Anonymous   
Printed
Page 45
The backquotes/backtics are backwards. The line

$uptime = '/usr/ucb/uptime';

should be:

$uptime = `/usr/ucb/uptime`;

Anonymous   
Printed
Page 45
The backquotes/backtics are backwards. The line

$uptime = '/usr/ucb/uptime';

should be:

$uptime = `/usr/ucb/uptime`;

Anonymous   
Printed
Page 46

The line of code now reads:

chop ($current_date = '/bin/date');

It should read:

chop ($current_date = `/bin/date`);


Anonymous   
Printed
Page 46

The line of code now reads:

chop ($current_date = '/bin/date');

It should read:

chop ($current_date = `/bin/date`);


Anonymous   
Printed
Page 54
The query information

install.x=250&install_y=20

should be:

install.x=250&install.y=20

Anonymous   
Printed
Page 54
The query information

install.x=250&install_y=20

should be:

install.x=250&install.y=20

Anonymous   
Printed
Page 64
code 1: | meet you ", should be

| meet you, ",

Anonymous   
Printed
Page 64
code 1: | meet you ", should be

| meet you, ",

Anonymous   
Printed
Page 65
The "simple_data" on the third line of the first paragraph should

be "simple_form" instead.

Anonymous   
Printed
Page 65
The "simple_data" on the third line of the first paragraph should

be "simple_form" instead.

Anonymous   
Printed
Page 66
The second sentence of the page ("The result is ... into the

array.") should read as follows:

The result is to fill the array key_value_pairs with entries
in the form of "key=value".

Anonymous   
Printed
Page 66
The second sentence of the page ("The result is ... into the

array.") should read as follows:

The result is to fill the array key_value_pairs with entries
in the form of "key=value".

Anonymous   
Printed
Page 75
The line

printf("Unrecognized method
", cgi->request_method);

should read:

printf("Unrecognized method: %s
", cgi->request_method);

Anonymous   
Printed
Page 75
The line

printf("Unrecognized method
", cgi->request_method);

should read:

printf("Unrecognized method: %s
", cgi->request_method);

Anonymous   
Printed
Page 100

The first sentence reads:

"The %D format specifies that the date should be in dd/mm/yy
format..."

That's incorrect -- the %D format produces a date in mm/dd/yy format.

Anonymous   
Printed
Page 100

The second sentence reads:

"%r format specifies "hh/mm/yy AM|PM" format..."

It should read:

"%r format specifies "hh/mm/ss AM|PM" format..."

Anonymous   
Printed
Page 100
There are a few errors in the table. Here is the original table

along with the corrections:

Format Value Example
------ ----- -------

%a Day of the week abbreviation Sun
%A Day of the week Sunday
%b Month name abbreviation (also %h) Jan
%B Month name January
%d Date 1 (NOT 01)

This is incorrect; %d actually returns "01" -- just the opposite
of what's stated.

%D Date as "%m/%d/%y" 06/23/95
%e Date 01

%e returns "1" and not "01". The %d and %e are mixed up.

%H 24-hour clock hour 13
%I 12-hour clock hour 1

%I returns the hour with a leading zero (i.e "01"). This explains
the leading zero in the example for %r.

%j Decimal day of the year 360
%m Month number 11
%M Minutes 08
%p AM | PM a.m.

%p returns am and pm as "AM" and "PM", respectively.

%r Time as "%I:%M:%S AM|PM" 07:17:39 PM

This is equivalent to: "%I:%M:%S %p"

%S Seconds 09
%T 24-hour time as "%H:%M:%S" 16:55:15
%U Week of the year 49
%w Day of the week number 05

%w returns the number WITHOUT a leading zero.

BTW, the information returned by %w is slightly confusing. It
returns the day of the week starting from Sunday (where Sunday
is day 0). For example, Sat, May 4 would be returned as 6.

%y Year of the century 95
%Y Year 1995
%Z Time zone EST

Anonymous   
Printed
Page 100

The first sentence reads:

"The %D format specifies that the date should be in dd/mm/yy
format..."

That's incorrect -- the %D format produces a date in mm/dd/yy format.

Anonymous   
Printed
Page 100

The second sentence reads:

"%r format specifies "hh/mm/yy AM|PM" format..."

It should read:

"%r format specifies "hh/mm/ss AM|PM" format..."

Anonymous   
Printed
Page 100
There are a few errors in the table. Here is the original table

along with the corrections:

Format Value Example
------ ----- -------

%a Day of the week abbreviation Sun
%A Day of the week Sunday
%b Month name abbreviation (also %h) Jan
%B Month name January
%d Date 1 (NOT 01)

This is incorrect; %d actually returns "01" -- just the opposite
of what's stated.

%D Date as "%m/%d/%y" 06/23/95
%e Date 01

%e returns "1" and not "01". The %d and %e are mixed up.

%H 24-hour clock hour 13
%I 12-hour clock hour 1

%I returns the hour with a leading zero (i.e "01"). This explains
the leading zero in the example for %r.

%j Decimal day of the year 360
%m Month number 11
%M Minutes 08
%p AM | PM a.m.

%p returns am and pm as "AM" and "PM", respectively.

%r Time as "%I:%M:%S AM|PM" 07:17:39 PM

This is equivalent to: "%I:%M:%S %p"

%S Seconds 09
%T 24-hour time as "%H:%M:%S" 16:55:15
%U Week of the year 49
%w Day of the week number 05

%w returns the number WITHOUT a leading zero.

BTW, the information returned by %w is slightly confusing. It
returns the day of the week starting from Sunday (where Sunday
is day 0). For example, Sat, May 4 would be returned as 6.

%y Year of the century 95
%Y Year 1995
%Z Time zone EST

Anonymous   
Printed
Page 133
The while loop is missing a matching brace in the text. However,

it exists in the online examples:

while (<FILE>){
if (m|[d+/w+/d+:([^:]+)|) {
$time[$1]++;
}
}

Anonymous   
Printed
Page 133
The while loop is missing a matching brace in the text. However,

it exists in the online examples:

while (<FILE>){
if (m|[d+/w+/d+:([^:]+)|) {
$time[$1]++;
}
}

Anonymous   
Printed
Page 159
'Percentage' mentioned at various points - use of this term is

not strictly correct.

Anonymous   
Printed
Page 159
'Percentage' mentioned at various points - use of this term is

not strictly correct.

Anonymous   
Printed
Page 162
line 29: 'Each element of the slices array is modified to

contain the percentage value...' Not stricly correct: it is a
'normalised' value, not a 'percentage'.

Anonymous   
Printed
Page 162
line 29: 'Each element of the slices array is modified to

contain the percentage value...' Not stricly correct: it is a
'normalised' value, not a 'percentage'.

Anonymous   
Printed
Page 201
1st para, line 2: changed "way" to "ways"

Anonymous    Jan 01, 1998
Printed
Page 201
1st para, line 2: changed "way" to "ways"

Anonymous    Jan 01, 1998
Printed
Page 250
line 3: "Fah" should be "FaH"

Anonymous   
Printed
Page 250
line 3: "Fah" should be "FaH"

Anonymous   
Printed
Page 255
The fgrep used in the example is GNU fgrep version 2.0 which

supports the -A and -B options.

Anonymous   
Printed
Page 255
The fgrep used in the example is GNU fgrep version 2.0 which

supports the -A and -B options.

Anonymous   
Printed
Page 265
The line

chop ($hostname = `bin/hostname`);

should read:

chop ($hostname = `/bin/hostname`);

Anonymous   
Printed
Page 265
The line

chop ($hostname = `bin/hostname`);

should read:

chop ($hostname = `/bin/hostname`);

Anonymous   
Printed
Page 269
The word "posses" should be "possess" on the 6th line of the

largest paragraph.

Anonymous   
Printed
Page 269
The word "posses" should be "possess" on the 6th line of the

largest paragraph.

Anonymous   
Printed
Page 306
In the second question, "Perl CGI rogram" should be "Perl CGI

program".

Anonymous   
Printed
Page 306
In the second question, "Perl CGI rogram" should be "Perl CGI

program".

Anonymous   
Printed
Page 326
Modern versions of the NCSA HTTPd server no longer use the

imagemap.conf file. You can pass the map file as extra path
information to the imagemap program directly, like so:

<A HREF="/cgi-bin/imagemap/graphics/dragon.map">
<IMG SRC="/graphics/dragon.gif" ISMAP></A>

where the map file (dragon.map) is stored in the /graphics
directory. Note that this is a virtual path.

Anonymous   
Printed
Page 326
Modern versions of the NCSA HTTPd server no longer use the

imagemap.conf file. You can pass the map file as extra path
information to the imagemap program directly, like so:

<A HREF="/cgi-bin/imagemap/graphics/dragon.map">
<IMG SRC="/graphics/dragon.gif" ISMAP></A>

where the map file (dragon.map) is stored in the /graphics
directory. Note that this is a virtual path.

Anonymous   
Printed
Page 368
The line

% chmod 711 clock.pl

should be:

% chmod 755 clock.pl

Anonymous   
Printed
Page 368
The line

% chmod 711 clock.pl

should be:

% chmod 755 clock.pl

Anonymous   
Printed
Page 369
In the first code snippet, the line


<HTML

should be:

<HTML>

Anonymous   
Printed
Page 369
In the first code snippet, the line


<HTML

should be:

<HTML>

Anonymous   
Printed
Page 374
'Server Simulation' section: 'setenv REQUEST_METHOD ...' line is

duplicated

Anonymous   
Printed
Page 374
'Server Simulation' section: 'setenv REQUEST_METHOD ...' line is

duplicated

Anonymous   
Printed
Page 385
There is an extraneous closing paren after "Special Edition

Using Perl".

Anonymous   
Printed
Page 385
There is an extraneous closing paren after "Special Edition

Using Perl".

Anonymous   
Printed
Page 402
On Line 12: '/p..l/' 'l' wrong font (should be Roman)

Anonymous   
Printed
Page 402
On Line 12: '/p..l/' 'l' wrong font (should be Roman)

Anonymous   
Printed
Page 417

4th line in list of URLs now reads:

ftp://ftp.iguide.com/pub/mirrors/packages/perl/CPAN/

Anonymous    Jan 01, 1998
Printed
Page 417

4th line in list of URLs now reads:

ftp://ftp.iguide.com/pub/mirrors/packages/perl/CPAN/

Anonymous    Jan 01, 1998
Printed
Page 421

{421} RFC 1341 has been replaced by RFC 1521.

Anonymous   
Printed
Page 421

{421} RFC 1341 has been replaced by RFC 1521.

Anonymous   
Printed
Page 436
added the following to the next-to-last para.

Whenever possible, our books use RepKover?, a durable and flexible
lay-flat binding. If the page count exceeds RepKover's limit, perfect
binding is used.

Anonymous    Jan 01, 1998
Printed
Page 436
added the following to the next-to-last para.

Whenever possible, our books use RepKover?, a durable and flexible
lay-flat binding. If the page count exceeds RepKover's limit, perfect
binding is used.

Anonymous    Jan 01, 1998