Errata

Beginning Perl for Bioinformatics

Errata for Beginning Perl for Bioinformatics

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 vii
-1 ## A reader reports

Genbank
->
GenBank

## This is confirmed.

########################################

Anonymous    Jan 01, 2007
Printed
Page viii
+1 ## A reader reports

Genbank
->
GenBank

## This is confirmed.

########################################

Anonymous    Jan 01, 2007
Printed
Page ix
+2


itself or an adjunct to ongoing investigations.
->
itself, or as an adjunct to ongoing investigations.

########################################

Anonymous    Jan 01, 2007
Printed
Page ix
+3

This books is
->
This book is

########################################

Anonymous    Jan 01, 2007
Printed
Page ix
-2

and the computer program.
->
and computer programming.

########################################

Anonymous    Jan 01, 2007
Printed
Page vii
-1

a link to the brain tumors you suspect exist.
->
a role in tumor development.

########################################

Anonymous    Nov 30, 2010
Printed
Page ix
-2

metaphor between the two disciplines.)
->
metaphor.)

########################################

Anonymous    Nov 30, 2010
Printed
Page xi
+2

sequences data
->
sequence data

########################################

Anonymous    Nov 30, 2010
Printed
Page 1
+3

large, programmable, digital/electronic (the ENIAC) computers.
->
large-scale, programmable, digital, electronic computers (such as ENIAC).

########################################

Anonymous    Nov 30, 2010
Printed
Page 2
+3

of DNA and positions

NOW READS:
of DNA and proteins

Anonymous    Sep 01, 2004
Printed
Page 2
-3

as in translating it to RNA

NOW READS:
as in transcribing it to RNA

Anonymous    Sep 01, 2004
Printed
Page 2
+4

The bases joined end to end to form
->
The bases are joined end to end to form

########################################

Anonymous    Nov 30, 2010
Printed
Page 2
-3

it's done so left to right
->
it's usually written left to right

########################################

Anonymous    Nov 30, 2010
Printed
Page 3
+3

Genbank, the Genetic Sequence Data Bank (http://www.ncbi.n/m.nih.gov)

NOW READS:
GenBank, the Genetic Sequence Data Bank (http://www.ncbi.nlm.nih.gov)

Anonymous    Sep 01, 2004
Printed
Page 3
-2

are composed of an amino group and a carboxyl group.

NOW READS:
are composed of an amino group, a carboxyl group, and a sidechain.

Anonymous    Sep 01, 2004
Printed
Page 3
footnote

It can appear as
->
It can appear in

########################################

Anonymous    Nov 30, 2010
Printed
Page 3
footnote

most of the life
->
much of the life

########################################

Anonymous    Nov 30, 2010
Printed
Page 4
+2

easy to identify
->
easy to calculate the

########################################

Anonymous    Nov 30, 2010
Printed
Page 4
+5

such as the intriguing processes of
->
for instance, the intriguing techniques of

########################################

Anonymous    Nov 30, 2010
Printed
Page 5
+2

related by virtue of their protein products as part of
->
related by virtue of their protein products being part of

########################################

Anonymous    Nov 30, 2010
Printed
Page 7
-4

natural, or spoken, languages, such as English
->
<emphasis>natural languages</emphasis>, such as English

##(NOTE to editors): natural language is not synonomous with spoken language.
## You can speak mathematics, or music, or Perl. You can write English.
## Some natural languages are now only written, such as ancient Egyptian, etc.
## A fine point, I realize, but humor me -- I spent 6 years in speech research,
## and my opinions are ossified ;>). So I <emphasize> it as a technical term, and
## give an immediate example - English.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 9
+1

Mac, then
->
Mac, and then

########################################

Anonymous    Nov 30, 2010
Printed
Page 9
-2

MacOS X
->
Mac OS X

########################################

Anonymous    Nov 30, 2010
Printed
Page 10
-2

MacOS X
->
Mac OS X

## two instances of this here

########################################

Anonymous    Nov 30, 2010
Printed
Page 11
+1 ## A reader reports

several books such as O'Reilly's Perl Resource Kits,
->
several books

## The reader comments:
## I would suggest to remove "such as O'Reilly's Perl Resource Kits,".
## There is only the Win32 version still available, and even this version
## is totally outdated and much too expensive for the audience of this book.

## Tisdall says: sounds plausible to me: editors, how say you??

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 11
itemized list #1

the that
->
that the

########################################

Anonymous    Nov 30, 2010
Printed
Page 14
-3

type /my_program

NOW READS:
type ./my_program

Anonymous    Sep 01, 2004
Printed
Page 15
+1

MacOS X
->
Mac OS X

########################################

Anonymous    Nov 30, 2010
Printed
Page 16
-1

beginners, there's
->
beginners: there's

########################################

Anonymous    Nov 30, 2010
Printed
Page 29 + 30
+2

the words "bases", "nucleosides" (see preceding note), and
"nucleotides" should be in italics - these are
important terms

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 30
+1

structure
->
primary structure

########################################

Anonymous    Nov 30, 2010
Printed
Page 30
+2

add a sugar and you get the nucleotides
->
add a sugar and you get the nucleosides

########################################

Anonymous    Nov 30, 2010
Printed
Page 32
+1

remember that
->
remember

########################################

Anonymous    Nov 30, 2010
Printed
Page 33
+2 command example ## A reader reports

perl example4 -1
->
perl example4-1

## This is confirmed.

########################################

Anonymous    Nov 30, 2010
Printed
Page 34
+2

MacOS X
->
Mac OS X

########################################

Anonymous    Nov 30, 2010
Printed
Page 35
+2

more easily read
->
more easily readable

########################################

Anonymous    Nov 30, 2010
Printed
Page 38
+3

and to make sure
->
and its output to make sure that

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 38
-1

to the right
->
on the right

########################################

Anonymous    Nov 30, 2010
Printed
Page 45
-2

new and successful way.
->
new and successful approach.

########################################

Anonymous    Nov 30, 2010
Printed
Page 47
+4

You can use any name
->
You can use any name for the file

########################################

Anonymous    Nov 30, 2010
Printed
Page 52
+2

You can print the elements one a after
->
You can print the elements one after

########################################

Anonymous    Nov 30, 2010
Printed
Page 54
+1

both are listed in
->
both are demonstrated in

########################################

Anonymous    Nov 30, 2010
Printed
Page 55
Exercise 4.7

the last line first. Or you may
->
the last line first. You may

########################################

Anonymous    Nov 30, 2010
Printed
Page 60
-1

Example 5-2 (from Chapter 4)
->
Example 5-2 (which modifies Example 4-7)

########################################

Anonymous    Nov 30, 2010
Printed
Page 61
-3

is assigned each time through the loop to
the next line of the file
->
is assigned to the next line of the file
each time through the loop

########################################

Anonymous    Nov 30, 2010
Printed
Page 61
-2

a Microsoft Windows versions
->
a version of Microsoft Windows

########################################

Anonymous    Nov 30, 2010
Printed
Page 62
+4

the type of input it gets.
->
the type of input the program gets.

########################################

Anonymous    Nov 30, 2010
Printed
Page 63
+2 ## A reader reports

Formats A nd B
->
Formats A and B

## This is confirmed.

########################################

Anonymous    Nov 30, 2010
Printed
Page 64
+1

Example 5-3, in Chapter 9, and
->
Example 5-3; in Chapter 9; and

########################################

Anonymous    Nov 30, 2010
Printed
Page 66
+2

(as was true in Example 4-3)

NOW READS:
(as was true in Example 4-5)

Anonymous    Sep 01, 2004
Printed
Page 66
-3 ## A reader reports

is a scalar variable starts with a dollar sign $)
->
is a scalar variable (which starts with a dollar sign $)

## This is confirmed.

########################################

Anonymous    Nov 30, 2010
Printed
Page 68
-3

whitespace characters, represented by s with nothing and by the lack of anything between
the second and third forward slashes.
->
whitespace characters (represented by s) with nothing (represented by the lack of anything between
the second and third forward slashes).

########################################

Anonymous    Nov 30, 2010
Printed
Page 68
-3

characters, which is done globally
->
characters. This deletion is done globally

########################################

Anonymous    Nov 30, 2010
Printed
Page 69
+1 ## A reader reports

line, and a formfeed advances to the next line. The two of them
together amount to the same thing as a newline character.
->
line. Perl newlines are handled differently on different operating systems;
briefly,
works on all, but you may see
at the end of lines on Windows.

## This is confirmed.

########################################

Anonymous    Nov 30, 2010
Printed
Page 72
-1

We now have a design for the program, let's
->
Now that we have a design for the program, let's

########################################

Anonymous    Nov 30, 2010
Printed
Page 74
Output from Example 5-4

T = 17

NOW READS:
T = 17
errors = 1

Anonymous    Sep 01, 2004
Printed
Page 74
-3

is the same as previous
->
is the same as in previous

########################################

Anonymous    Nov 30, 2010
Printed
Page 75
+2

decimal or floating-point numbers
->
decimal (or floating-point) numbers
## italicise "floating-point"

########################################

Anonymous    Nov 30, 2010
Printed
Page 75
+2

6,544000
->
6544000

## not 6,544,000 because readers might try inputting numbers to Perl that way

########################################

Anonymous    Nov 30, 2010
Printed
Page 75
+4 ## A reader reports

(see Chapter 6 and the discussion of my variables)
->
## omit this parenthesis, it duplicates a remark earlier in the paragraph.

## This is confirmed.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 75
+4

languages also require you to declare the type of a variable, for example "integer," or
"string," but Perl does not.
->
languages require you to pre-declare a variable's type (e.g. "integer i"). Perl
indicates the type right in the variable name (e.g. the "@" in "@array").

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 77
+2

This version of the foreach loop:

foreach(@DNA) {.

NOW READS:
This version of the foreach loop:

foreach (@DNA) {

Anonymous    Sep 01, 2004
Printed
Page 77
+2

in the version of this loop in Example 5-5

NOW READS:
in the version of this loop in Example 5-4

Anonymous    Sep 01, 2004
Printed
Page 80
+1 (output of Example 5-6)

recognize this vase:

NOW READS:
recognize this base:

Anonymous    Sep 01, 2004
Printed
Page 80
+2

or Perl documentation
->
or the Perl documentation

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 81
+5

"seeing.
"

NOW READS:
"seeing".

Anonymous    Sep 01, 2004
Printed
Page 81
-1

regularly
->
often

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 82
+1 (in code fragment)

# Also write the results to a file called "countbase"

$outputfile = "countbase";
(
unless ( open(COUNTBASE, ">$outputfile") ) {

NOW READS:
# Also write the results to a file called "countbase"
$outputfile = "countbase";

unless ( open(COUNTBASE, ">$outputfile") ) {

Anonymous    Sep 01, 2004
Printed
Page 82
footnote

several other behaviors.

NOW READS:
several other behaviors, such as appending to a file.

Anonymous    Sep 01, 2004
Printed
Page 82
footnote

reading from, and writing to, files as well as other actions.
->
reading from files and writing to files, as well as other actions.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 84
Second line from top

while($dna =~ /a/ig){$a++}
Should be:
while($DNA =~ /a/ig){$a++}

4th line from top;
$dna =~ /a/ig
should be:
$DNA =~ /a/ig

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 84
+2

also has the global modifier,
->
also has the global modifier g,

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 84
-3

you'll use those while loops to good effect
->
you'll use while loops in a similar fashion, to good effect

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 84
-1

The program, however,
->
The program, moreover,

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 84
last code

($dna = ~ tr/ACGTacgt//)
->
($dna =~ tr/ACGTacgt//)
There shouldn't be a space between = and ~

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 85
Exercise 5-1

MacOS X
->
Mac OS X

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 85
Exercise 5.6; ## A reader reports

The solution to Exercise 5.6 does not find the reverse complement of DNA. If s
hift is substituted for pop in the code, then the reverse complement would be f
ound.

However the solution to Exercise 5.6 does not show any output when compiled. P
lease fix the solution to Exercise 5.6, ie include STDIN in the program.

## Tisdall replies:
## This report is incorrect. The exercise determines if the two input
## strings are reverse complements of each other.
## Also, the program does not use STDIN -- it gets its data from the
## command line, and uses @ARGV for that. Here's an example of running
## the program:
#### $ perl exer05.06 ACCGGTAGCGGAGCTGGG CCCAGCTCCGCTACCGGT
#### They ARE reverse complements

########################################

Anonymous   
Printed
Page 85
-1 ## A reader reports

(eq actually an operator).
->
(eq is actually an operator).

## This is confirmed.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 86
Exercise 5.9 ## A reader reports

(Hint: you can use the Perl functions substr or slice.
->
(Hint: you can use the Perl functions substr or splice.)

## This is confirmed

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 86
Exercise 5.10; ## A reader reports

After being compiled and run Exercise 5.10 does not, print the message:

"File $tmpfile does not exists!
"

Shouldn't the program print this, since the program's purpose is to remove the
tmp file?

## Tisdall replies:
## This report is incorrect. The program does not print any message when
## everything works. Error messages are only printed if something fails
## to work during the program. (Think of it as an error-reporting program.)

########################################

Anonymous   
Printed
Page 87
+1

the mutation of DNA.
->
the mutation of DNA, and in all the following chapters.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 88
+1

mean of a distribution at
->
mean of a distribution, at

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 88
footnote

so-called recursion
->
## italicise "recursion"

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 88
-3

The trick of all
->
The trick to all

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 89
-2

We'll now look at this code
->
We'll now look more closely at this code

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 90
-1

seen earlier in loops and conditional statements that groups
->
as the block used in a loop to group

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 91
-3

as in return $dna; in our subroutine addACGT, in a list of scalars as in
return ($dna1, $dna2);, in an array as in return @lines;, and more.
->
as in return $dna in our subroutine addACGT; in a list of scalars as in
return ($dna1, $dna2); in an array as in return @lines; and more.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 93
warning

such as the my construct.

NOW READS:
with the my construct. (Unless you're
using global variables, which we're not.)

Anonymous    Sep 01, 2004
Printed
Page 93
+3 code example

my $x ;
->
my $x;

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 94
-1

You can get by this
->
You can obtain the

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 96
+4 code fragment

AAGGGGTTTCCC

NOW READS:
% perl example6-3.pl AAGGGGTTTCCC

Anonymous    Sep 01, 2004
Printed
Page 96
+1

even though a variable called $dna is lengthened inside the subroutine
->
even though the value of a variable called $dna is altered inside the subroutine

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 96
+2

You use the command line
->
You'll also use the command line

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 96
-2

MacOS X
->
Mac OS X

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 97
Subroutines for Example 6-3

# Chapter Four, "Motifs and Loops"
->
# Chapter Five, "Motifs and Loops"

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 98
-4

as you would any other scalar variables.
->
as you would any other scalar variable.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 101
+3

In the example of pass-by-reference in this section
->
In the example of pass-by-reference later in this section

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 102
-2

passed on as arguments.
->
passed in as arguments.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 102
-1

appear in multiple program.
->
appear in multiple programs.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 103
-2

Beginning in Chapter 8, I'll define subroutines and show the code, but you'll be
putting them into your module and typing:
->
All the useful subroutines in this book will be put into this module, which
you'll start using in Chapter 8 by typing:

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 107
code example, for each loop, variable name in line 8 of the

loop, middle of the page

$recieving
->
$receiving

#######################################

Anonymous    Jan 01, 2007
Printed
Page 109
-2

step you through that code as well.
->
steps you through that code as well.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 110
+4

Now that $dna has been declared and initialized, the program seems wrong on the
first statement:
->
Now that $dna has been declared and initialized, let's see if it's what we expect:
this may be where the program's going wrong, on the first statement!

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 110
First code section

The paragraph before the code:
"If you wish to see more lines, the w or "window" command will serve"
w adds a watch. It Should be v
"If you wish to see more lines, the v or "window" command will serve"

#######################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 113
First code part

Books states:

DB<12> D
Deleting all breakpoints..

But it should be:
DB<21> B *
Deleting all breakpoints...

#######################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 113
Third debugging code section

DB<13> w 45

Should it be
DB<13> v 45

######################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 113
Second debugging code section

Book states
DB<12> W $receivingcommittment

But should be w (lowercase)
DB<12> w $receivingcommittment

#######################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 114
2nd paragraph

Book
You see that at line 66 you misspelled

Should be
You see that at line 46 you misspelled

#######################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 115
Last paragraph from bottom

Book states
"So fix the misspelling at line 66"

Should be
"So fix the misspelling at line 46"

#######################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 118
+1

nonviable offspring that dies
->
nonviable offspring that die

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 118
+1

they can lead to evolutionary
->
mutations can lead to evolutionary

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 119
last paragraph

the first and last sentences of this paragraph are redundant and one could be cut (I
would recommend cutting the last sentence).

first sentenct: "In the examples that follow, I use a simple Perl Method for seed
picking that's okay for most purposes."

last sentence: "In this book, I use a Perl method that is good enough for most
purposes."

######################################

Note from the Author or Editor:
Error corrected. Will be fixed for next printing.

Anonymous    May 02, 2011
Printed
Page 123
+2

is a do-until loop.
->
is a do-until loop, first seen in Example 5-3.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 123
+2

that do the test first and then the block.
->
that test first and then do the block.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 124
+4

greater than 0 and less than 7

NOW READS:
greater than or equal to 0 and less than 7

Anonymous    Sep 01, 2004
Printed
Page 125
-2

a task. the following
->
a task. The following

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 127
+1

is really a short function
->
is a very short subroutine

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 127
+1

It's just like the idea in
->
It's a subroutine to select a string position, very similar to the idea in

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 127
+2

Of course, if you were really writing this code, you'd make a little test to see if your
subroutine worked.
->
While writing subroutines, you frequently want to write a little test to see if your
subroutine works as you intend:

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 129
-3

is a short program.
->
is a short subroutine.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 129
-3

picking a random position then
->
picking a random position, then

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 129
-3

have to do that a lot
->
have to look things up a lot

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 138
+3

main program and proceeds, following the order of the
top-down design you did in pseudocode,
then followed by the subroutines.
->
main program and is followed by the subroutines,
in the same order as the top-down design you did in pseudocode.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 142
+2

nucleotide in the same position
->
nucleotides in the same positions

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 146
output example 7-4

is says
matching positions is 0.24%
should say either 24%

#######################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 147
3rd paragraph from the top

(indexed by $K)

should be
(indexed by $k)

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 148
Exercise 7.7; ## A reader reports

Sometimes not all choices are will be picked
->
Sometimes not all choices are equally likely to be picked

## This is confirmed.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 149
+2

different data structures (hashes, arrays, and databases) can store

NOW READS:
different data structures (like hashes and arrays) and database systems can store

Anonymous    Sep 01, 2004
Printed
Page 150
-5

Mathematically, a Perl hash always represents a finite function.
->
## Take this sentence out of this paragraph, and place it instead
## between the two sentences of the following paragraph.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 152
+1

couldn't respond
->
couldn't respond informatively

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 152
+2

## Append this at the end of the 2nd paragraph,
## after "missing from your experiment."
->
(Maybe the user simply mistyped the gene name!)

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 152
-1

You might try storing
->
You could store

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 153
+2

in an array, for example, to search
->
in an array. For example, to search

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 155
+1 ## A reader reports

databases. Some good ones that are free
->
databases, some good ones that are free

## This is confirmed.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 155
-3

The genetic code is how a cell translates the information contained in its DNA into
amino acids and then proteins, which do the real work in the cell.
->
The genetic code describes how the information in the <firstterm>coding regions</firstterm>
of DNA is translated into the correct amino acids for the assembly of the cell's proteins.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 155
-2

Herein
->
Here

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 156
+4

The chart in Figure 8-1 shows how the various bases combine to form amino acids.

NOW READS:
Figure 8-1 shows each codon and its associated amino acid: the genetic code.

Anonymous    Sep 01, 2004
Printed
Page 156
-2

the process stops when a codon is encountered.

NOW READS:
the process stops when one of the three stop codons is encountered.

Anonymous    Sep 01, 2004
Printed
Page 156
-2

the process stops when a codon is encountered.
->
the process stops when one of the three stop codons is encountered.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 156
-1

the encoding of amino acids
->
the encoding for amino acids

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 159
+2

The print statement accepts a filehandle as an optional
argument, but so far, we've been printing to the default STDOUT.
->
The print statement accepts a filehandle as an optional
argument (as in Example 5-7), but by default prints to STDOUT.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 159
-1

code, and the last subroutine clearly displays this redundancy.
It might be interesting to express that in your subroutine.
->
code, and subroutine codon2aa clearly maps several codons to the
same amino acid. We can represent this redundancy another way.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 159
-1

let's try to redo the subroutine
->
let's rewrite subroutine codon2aa

######################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 160
+3 ## A reader reports

$codon
->
## could be formatted in nonproportional font

## Tisdall says: editors, how say you???

#######################################

Anonymous   
Printed
Page 163
+4

the genetic code hash
->
the genetic_code hash

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 163
-1

subroutine translates a whole DNA sequence
->
subroutine can be used to translate a whole DNA sequence

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 164
+2 ## A reader reports

condon2aa
->
codon2aa

## This is confirmed.

###########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 165
after second paragraph; ## A reader reports

"$codon = substr ($dna, $i 3);" should be
"$codon = substr ($dna, $i, 3);"

## This is confirmed.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 166
-1

biologists and programmers invented
->
biologists and programmers have invented

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 167
7th paragraph

Protein Identification Resource (PIR)
->
Protein Information Resource (PIR)

#######################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 167
-1

limit them to 80 characters in length.
->
limit them to at most 80 characters.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 170
+2

would think incorrectly, that the file
->
would think, incorrectly, that the file

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 171
-1

It's convenient to declare these my variables as $line on the spot,

NOW READS:
It's often convenient to declare a loop's "index variable" (like $line)
as a my variable, right on the spot in the loop,

Anonymous    Sep 01, 2004
Printed
Page 174
-1

As you accumulate useful subroutines in our modules,
->
As you accumulate useful subroutines in modules,

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 175
-3

where in the DNA you're studying the cell
->
where, in the DNA you're studying, the cell

#########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 176
Code for subroutine "revcom"

my($revcom) = reverse($dna);

NOW READS:
my $revcom = reverse $dna;

Anonymous    Sep 01, 2004
Printed
Page 177
-1

## The equation should be reformatted so that:

+1
->
+ 1

#######################################

Anonymous    Dec 01, 2009
Printed
Page 177
-1 ## A reader reports

Pseudocode line near the bottom of the page, above last paragraph;
This is pseudocode, so it doesn't have to be perfect, but as written this line
looks like some kind of strange assignment instead of a comparison:

"(end - 1) - (start - 1) + 1 = end - start +1"

I'm not sure what the best way to fix this is. It is set in the monospace font
used for pseudocode & real code, but it isn't quite either, so I was going to s
uggest re-setting it in the variable width font used in the main text. That pro
bably won't clarify it either though, so the equals sign should probably just b
e doubled so that it's clear that the line is a comparison, and not an assignme
nt.

## Tisdall replies:
## This report is (kind of) confirmed. The line in question is an
## equation from elementary algebra.
## = as assignment in programming languages, and = as equality
## in algebra and much other mathematics, is indeed confusing
## (and has already been discussed), therefore let me add:

So let's write this subroutine:
->
as we know from algebra. So let's write this subroutine:

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 182
-4 ## A reader reports

an.d
->
and

## This report is confirmed.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 184
+3

documentation (or Appendix B), for
->
documentation (or Appendix B) for

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 187
1st paragraph

for each enzyme.To simplify matters
->
for each enzyme. To simplify matters

#######################################

Note from the Author or Editor:
Error corrected. Will fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 188
-4

If you have two or three per line that have whitespace and are separated from each
other by whitespace,
->
We have two or three words per line that are separated from each
other by whitespace,

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 188
-4

(which acts on the line as stored in the special variable @_.:
->
(which by default splits on the line stored in the special variable $_):

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 188
-4

($name, $site) = split(" ")
->
@fields = split(" ");

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 188
-2

$name = shift@fields;
$site = pop@fields;
->
$name = shift @fields;
$site = pop @fields;

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 188
-1

the documentation on REBASE you found on its web site
->
the documentation from the REBASE web site

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 189
+2

Of course, REBASE uses them, because a given restriction enzyme might well match
a few different recognition sites.
->
Of course, REBASE uses these IUB codes because a given restriction enzyme might well bind
to a few different DNA patterns, varying in one or more bases.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 189
+3

given a string,
->
given a string of sequence containing IUB codes,

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 191
Example 9-2 Subroutine "parseREBASE"

# Read in the REBASE file
@rebasefile = get_file_data($rebasefile);

foreach ( @rebasefile ) {

!!! Should be: !!!

# Read in the REBASE file
my $rebase_filehandle = open_file($rebasefile);

while(<$rebase_filehandle>) {

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 191
-1

You're using a foreach loop to process the lines of the bionet file stored in the
@rebasefile array.

!!! Should be: !!!

You're using a while loop to process the lines of the bionet file as they are
read in from the file using the filehandle called $rebase_filehandle.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 192
-1

evaluates and returns the right.
->
evaluates the right and returns.

#########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 193
+2

conditionals to their own blocks.
->
conditionals with their own blocks.

#######################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 193
+3

and returns the left argument if it's true; if the left
argument doesn't evaluate to true, it evaluates and returns the right argument.
->
the left argument and returns if it's true; if the left
argument is false, it evaluates the right argument and returns true or false.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 193
-3

you skip the rest of the loop.
->
you skip the rest of the block and return to the top of the loop.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 200
+3 ## A reader reports

It's bad, because that same flexibility makes it harder to write programs that to
find and extract the desired annotations.
->
It's bad, because that same flexibility makes it harder to write programs that
find and extract the desired annotations.

## This is confirmed.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 203
-1

contains 12,813516 loci and
->
contains

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 204
-3

over 8 trillion
->
over 8 billion

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 205
+3

with each appearing as an element
->
with each line of the file appearing as an element

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 205
+5

this datafile and the file record.gb in the next
->
library.gb, and the file record.gb which contains just one GenBank record, in the next

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 206
## A reader reports

(typical)) foreach{ ... } section of the parse1() subroutine, starting at
middle of page;
Most of the book's code is pretty clear & consistent, but one thing that the au
thor keeps wavering on is the inclusion or omission of spaces on lines like the
ones here. Appreviating, the code here has these lines:

} elseif( $in_sequence) {
} elseif ( $line =~ /^ORIGIN/ ) {
} else{

Note that the second elsif is followed by a space, but the first one isn't and
neither is the else. Likewise, $in_sequence has a leading space but not a trail
ing one.

## This report is correct. In this code fragment it does interfere with readability.
## Since the code is so dense here, I'd prefer:
if ( $line =~ /^//
/ ) {
}elseif ( $in_sequence ) {
}elseif ( $line =~ /^ORIGIN/ ) {
}else {
## But in general it's a deliberate choice to vary these things. 1) All such variations
## are legal Perl, and for good reason. 2) Beginners are likely to encounter such
## variations as they encounter different programming styles. 3) Beginners experiment
## with different styles as they develop their own preferences, so 4) I show the
## beginners different styles, and discuss the issue in the book.
##
## I am fully aware of the reason for standards for such formatting issues.
## However, I feel even in professional code they are not an unbreakable rule,
## and that readability is paramount. (You may feel that the only way to
## ensure readability is to follow a rule consistently, but I disagree.)

########################################

Anonymous   
Printed
Page 207
+4

like so: m!//
!).
->
like so: m!^//
! where the expression is now ^//
).

#########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 208
+1

Other methods of collecting annotation and sequence lines are possible, especially if
you go through the lines of the array more than once. You can scan through the
array, keeping track of the start-of-sequence and end-of-record line numbers, and
then go back and extract the annotation and sequence using an array splice (which
was described in the parseREBASE subroutine in Example 9-2). Here's an example:
->
Other methods of collecting annotation and sequence lines are possible, especially if
you go through the array more than once. If you first find the start-of-sequence
and end-of-record line numbers, you can do the extraction with an array slice, in
which you list the desired elements or indicate them with a range, for example:
@arrayslice = @array[0,3,5] or @arrayslice = @array[3..8]. Here we use a range:

## Note to Editor: "array slice" should be emphasized as a new term. If possible,
## it should be added to the index.

#######################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 208
+1 in program listing ## A reader reports

/^//
/
->
m!^//
!

## This is confirmed.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 208
+1 in program listing ## A reader reports

<programlisting>
->
## This line should be deleted from the program listing.

## This is confirmed.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 208
-3

in Examples 6-2 and 6-3
->
in Examples 8-2 and 8-3

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 209
+2

so it extends the ^ and the $
to match after, or before, a newline, embedded in the string.
->
so it extends the ^ to match after an embedded newline,
and the $ to match before an embedded newline.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 209
-3

First, let's examine
->
Let's examine

########################################

Note from the Author or Editor:
Error corrected. Will be fixed for the next printing.

Anonymous    May 02, 2011
Printed
Page 210
-2

A call to read
->
After setting the input record separator to "//
", a call to read

#########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 219
Example 10-5 Subroutine "get_annotation_and_dna" at top of page ## A reader reports

# - given GenBank record, get annotation and DNA
->
# - given filehandle for GenBank file, get GenBank record

## This is confirmed. (N.B. This should only be changed at the top of the
## page, not on the second occurence of the line in the middle of the page.)

#########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 219
Example 10-5 Subroutine "get_annotation_and_dna"

$dna =~ s/[s/]//g;
!!!! Should be: !!!!
$dna =~ s/[s/d]//g;

#######################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 223
+3

which is a special variable pattern between
->
which is a special variable that remembers the pattern that matched between

#########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 227
1st paragraph

"I then saved the output as text in the file blst.txt, which is available from this..."
blst.txt
should be
blast.txt

########################################

Anonymous   
Printed
Page 228
-1

Example 10-8 finds
->
Example 10-7 finds

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 229
+1

as this allows you to store, for instance, only one instance of an exon).
->
as a hash would allow you to store, for instance, only one value with key 'exon').

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 230
+1

Example 10-8 gives the output:
->
Example 10-7 gives the output:

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 231
+1

parse_features of Example 10-8,
->
parse_features of Example 10-7,

#########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 231
+1

code of Example 10-8:
->
code of Example 10-7:

#######################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 235
middle of page; ## A reader reports

if ($offset)
->
if (defined $offset)

## $offset can have a valid zero value for the first accession number,
## which would fail the test for "if ($offset)"

## This report is confirmed. The book and the downloadable examples will be updated.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 239
+1

the effect on biology and medicine would be profound.
->
the effect on biology and medicine will be profound.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 239
+2

information form them.
->
information from them.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 241
-1

Since you're running this program on a folder that contains PDB files,
this is what you'll see:
->
You can download a small sample 'pdb' directory from this book's web site;
if you do, this is what you'll see when you run this program:

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 242
+1

you can give the directory name the special name "." for the current directory,
->
you can just call the directory by the special name ".",

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 242
+2

the special files
->
the special file names

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 248
+3

The reason for using a subroutine that you define is that it enables you
->
File::Find is designed to call your own subroutines, because it enables you

#########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 257
Example 11-5

Omit this line:
print "****chain $chain ****
";

#######################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 258
20th line of code; ## A reader reports

given an scalar containing SEQRES lines,
->
given a scalar containing SEQRES lines,

## This is confirmed.

#######################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 260
-4

In Chapter 10, I demonstrated two ways to parse GenBank files into sequence and
annotation and then how to parse the annotation into finer and finer levels of detail.
->
In Chapter 10, I compared two ways to parse GenBank files into sequence and
annotation, and to parse the annotation into finer and finer levels of detail.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 260
-3

what field the input line was in.
->
which section of the file each input line came from.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 261
+2

captures the pattern matched, denoted by $&
->
copies the pattern matched, denoted by the special variable $& that always holds
the last successful pattern match,

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 261
-4

Let's examine the subroutine extractSEQRES, now that the record types have been
parsed out, and extract the primary amino acid sequence.
->
Now that the record types have been parsed out, let's examine the subroutine extractSEQRES,
and see how it extracts the primary amino acid sequence.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 261
-2

The previous parse, in Example 11-4,
->
The subroutine parsePDBrecordtypes, in Example 11-5,

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 261
-2

Our success with the previous parsePDBrecordtypes subroutine that used iteration
over lines (as opposed to regular expressions over multiline strings)
leads to the same approach here.
->
Our success in parsePDBrecordtypes using iteration over lines
(as opposed to regular expressions over multiline strings)
leads us to try the same approach here.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 262
+4

you won't have use for the strings of amino acids in three-character codes.
->
you might not encounter strings of amino acids in three-character codes.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 265
+2

and the element symbol.
->
and the element symbol. The $x, $y, and $z may also contain some spaces.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 265
-2

1.888 -8.251 -2.511 N
18.955 -10.180 10.777 C
!!! Should be !!!
1.888 -8.251 -2.511 N
-0.873 9.368 16.046 C

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 266
+1 program code

printf "%8.3f%8.3f%8.3f %2s
", $x, $y, $z, $element;
->
print "$x $y $z $element
";

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 266
-2

We've already seen the use of the printf function to format output with more
options then with the print function.
->
For column-specific data such as in PDB, an alternative with more options than
the print function is the printf function, which we'll see later in this chapter.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 266
-1 command example ## A reader reports

from the command line like so, assuming you saved the program
in a file called get_two_atoms:

%perl get_two_atoms pdb1a4O.ent
->
from the command line like so ("biocomp%" is the computer prompt), assuming you saved the program
in a file called get_two_atoms:

biocomp% perl get_two_atoms pdb/c1/pdb1c1f.ent

## This report is confirmed. The prompt has been explicitly noted.
## Also, the file name is now the same as in the preceding example.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 267
+1

Alternatively,
->
Alternatively, on Unix or Linux or Mac OS X,

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 267
1st paragraph

get_two__atoms
->
get_two_atoms

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 267
+1 program code

% cat pdb1a4O.ent | perl get_two_atoms

or

% perl get_two_atoms < pdb1a4O.ent
->
biocomp% cat pdb/c1/pdb1c1f.ent | perl get_two_atoms

or

coltrane% perl get_two_atoms < pdb/c1/pdb1c1f.ent

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 267
-2

Unix or Linux
->
Unix or Linux or Mac OS X

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 267
-2

Windows or Macintosh
->
Windows or older Macintosh

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 267
-1

a program that outputs a secondary structure report, called stride.
->
a program called stride that outputs a secondary structure report.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 267
-1 ## A reader reports

http://www.embl.heidelberg.ole/stride/stride_info.html
->
http://www.embl-heidelberg.de/stride/stride_info.html

## This report is confirmed.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 267
-1

of a PDB filename and collect the output in the subroutine call_stride that follows.
->
of a PDB filename. I collect the output in the subroutine call_stride that follows.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 270
+2

The actual running of the program and collecting its output happens in just one line.
->
The actual running of the program and collecting its output happen in just one line.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 271
paragraphs +2 and +6

Move paragraph +2:

Using the subst function, the two for loops alter each line of the two arrays by saving
the 11th to the 60th positions of those strings. This is where the desired information
lies.

to the end of paragraph +6, which now reads:

Next, you want to save just those positions (or columns) of the lines that have the
sequence or structure information; you don't need the keywords, position numbers,
or the PDB entry name at the end of the lines. Using the subst function, the two for
loops alter each line of the two arrays by saving the 11th to the 60th positions.
This is where the desired information lies.

#########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 272
+1

Check the next section for a subroutine that will improve that output.
->
The exercises that follow ask you to write a subroutine that will improve that output.

#######################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 274
+1

In biological research, the search for sequence similarity is very important. For
instance, a researcher who has discovered a potentially important DNA or protein
sequence wants to know if it's already been identified and characterized by another
researcher. If it hasn't, the researcher wants to know if it resembles any known
sequence from any organism. This information can provide vital clues as to the role
of the sequence in the organism.
->
In biological research, the search for sequence similarity is very important. For
instance, a researcher who has isolated a potentially important DNA or protein
sequence wants to know if it's already been identified and characterized by another
researcher. If it hasn't, the researcher wants to know if it resembles any known
sequence from any organism. This information can provide vital clues as to the role
of the sequence in the organism under study. And when no such resemblance is found,
it is evidence that the sequence may belong to a new class of genes or gene products.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 275
+1

There are a several
->
There are several

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 285
+2

so that you match all the available lines.
->
to match all available such lines (at least one).

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 288
code at bottom of page ## A reader reports

## This routine does not remove the characters "ct" from the word
## "Sbjct" found on each subject line. This causes the insertion
## of the "ct" preceding each subject line into the sequence
## returned in $subject. The value returned in $subject is always
## incorrect.

$query = join ( '' , ($HSP =~ /^Query.*
/gm) );

$subject = join ( '' , ($HSP =~ /^Sbjct.*
/gm) );
!!! Should be !!!
$query = join ( '' , ($HSP =~ /^Query(.*)
/gm) );

$subject = join ( '' , ($HSP =~ /^Sbjct(.*)
/gm) );

## This is confirmed.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 289
program output at top of page ## A reader reports

-> Subject String: ctggagatggctcagacctggaacctccggatgccggggacgacagcaagtctgagaatg
ggctgagaacgctcccatctactgcatctgtcgcaaaccggacatcaattgcttcatgattggacttgtgacaactgca
acgagtggttccatggagactgcatccggatca

!!! Should be !!!

-> Subject String: ggagatggctcagacctggaacctccggatgccggggacgacagcaagtctgagaatggg
gagaacgctcccatctactgcatctgtcgcaaaccggacatcaattgcttcatgattggatgtgacaactgcaacgagt
ggttccatggagactgcatccggatca

## This is confirmed.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 289
-5

## Delete this sentence:

Here you see that not only can a subroutine return an array on a scalar value;
it can also return a hash.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 290
+2

This is the nongreedy or minimal matching mentioned in Chapter 9.
->
This is the nongreedy or minimal matching; it matches the shortest string possible.
By default, * is greedy, matching the longest string possible.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 290
+4

before and after embedded newlines.
->
before and after embedded newlines, respectively.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 290
+6

the + following the other parentheses.
->
the + following the outer parentheses.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 291
+3

in the same manner as you would a print function.
->
in the same manner as you would in a print function.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 291
-3

Here's what is in Example 12-3.
->
Here's what is in the example just given.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 292
-1

FORTRAN programming-language conventions
->
FORTRAN programming language conventions

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 294
+3 ## A reader reports confusion over the output on page 293, so I add on p.294

(which, in this case, is true.)
->
(in our example it prints "This DNA is so...")

## This is confirmed.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 295
+2

Bioperl doesn't provide complete programs. Rather, it provides a fairly large-and
growing-set of modules for accomplishing common tasks, including some tasks
you've seen in this book. You're responsible for writing the code that holds the mod-
ules together. By providing these ready and (usually) easy-to-use modules, Bioperl
makes developing bioinformatics applications in Perl faster and easier. There are exam-
ple programs for most of the modules, which can be examined and modified to get
started.
->
Bioperl doesn't provide the programmer with complete programs. Rather, it provides
a fairly large-and growing-set of modules for accomplishing common tasks, including
some tasks you've seen in this book. You have to write the programs that use the
modules. The goal of Bioperl is to make developing bioinformatics applications
easier, by providing easy-to-use standard modules. There are example
programs for most of the modules, which can be examined and modified to get
started.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 303
-1

I've frequently mentioned modules and CPAN
->
I've frequently mentioned modules, and CPAN

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 305
+2

the thousand of genes and gene products
->
the genes and gene products

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 305
+3

Graphics programming language present
->
Graphics programming languages present

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 310
+5 ## A reader reports

"low signal-to-noise ration"
->
"low signal-to-noise ratio"

## This is confirmed.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 312
+2

Np-Completeness
->
NP-Completeness

#########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 313
+4

Baxecvanis
->
Baxevanis

#######################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 315
+2

The Perl programs in this book start with the line:
->
The Perl programs in this book start with the line (with or without the -w):

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 315
+3

If the Perl program file was called myprogram, and had executable permissions,
->
If the Perl program file is called myprogram, and has executable permissions,

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 318
+1 and +2

## The three instances of 1,000 should be changed. The comma is good
## Chicago Manual of Style, but incorrect Perl.

1,000
->
1000

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 322
-4

(and if you're not careful, strings as well).
->
(and may give you unexpected results if you apply them to strings, as well).

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 323
+1

(or a to b)
->
(or 'a' to 'b')

########################################

Note from the Author or Editor:
Error corrected. Will be fixed for next printing.

Anonymous    May 02, 2011
Printed
Page 325
-1

instead of not or and.
->
instead of not, or, and.

## Also, the typesetting has made "not" and "and" in a special font, but
## has not done so for "or". All three should be in a special font.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 326
-3

and in their variants and loops.
->
and their variants, and in loops.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 328
+5

This shows that a pattern match can return a count of the number of translations made
in a string, which is then assigned to the variable $count.
->
This shows how a pattern match can return a count of the number of patterns found
in a string, which in this case is then assigned to the variable $count.

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 329
-2

any variable name or none,
->
## The word 'none' is in a special font; it should be in normal font, as this
## is not a variable name

########################################

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011
Printed
Page 332
+2

MacOS X
->
Mac OS X

Note from the Author or Editor:
Error corrected. Will be fixed in next printing.

Anonymous    May 02, 2011