Perl Programming for Biologists. D. Curtis Jamison. Hoboken, NJ: Wiley- Liss, A John Wiley Sons Publication, 2003, 202 pp., $42.95, softcover. ISBN 0471-43059-5. The biologist of today is a different species from his or her predecessors of only a few years ago. Even the most classic branch of biological sci- ences, taxonomy, is now a domain of elaborate computer searches and comparisons of genomic and phylog- eny information. Computers have become indispensable tools in all branches of biology, and computer programming is an essential skill for today’s biologist. However, even a few years ago most biology gradu- ates were not required to take com- puter classes. To stay on the cutting edge of science, they have to make up for this. Perl Programming for Biologists is a good attempt to create a skillful pro- grammer from a person with a very limited computer background. The book starts with a useful introduc- tion that clearly explains why one cannot avoid computing in biology and why perl is well suited in the context of bioinformatics. The book consists of three parts and an appen- dix. The first four chapters make up “The Basics” part. In the short first chapter, “Introduction to perl”, the author presents an example of the traditional Hello World script. This is a good introduction, although with a caveat—the hello.pl pro- gram may not run because the cur- rent user directory is rarely included in the UNIX PATH. A short addi- tional sentence, “If it does not work, try ./hello.pl, since on most sys- tems the current directory might not be checked for executable pro- grams”, will help the confused be- ginner. The next chapter reviews variables and data types and contains good examples and useful discussions, es- pecially for someone new to pro- gramming. What would probably help is a short discussion of octal and hexadecimal representation and a discussion of conventions for the New Line sequence on different operating systems (ˆJ on UNIX, ˆMJ under Microsoft and Web, and ˆM for Macs) and using chop and chomp functions. In addition, be- cause of a typographical error, the result of 2 + 3*4 is given as 24, but this error might actually test the reader’s attention. The UNIX prompt, which is sometimes given as haydn 10% and sometimes just %, may be confusing to the novice. Later in Part I, the author clearly presents the overview of arrays and hashes. These are powerful and, by neces- sity, complex data types to learn for aspiring programmers, but good ex- amples in the chapter are of great help. The next chapter, on control structures, is also written with great examples and in-depth discussion. Once again, there are some typo- graphical errors; in the discussion of the = operator, trust the exam- ples, rather than the text. In the next part, “Intermediate perl”, more advanced elements of perl programming are discussed. The chapter of subroutines systemat- ically explains this important domain of perl programming. Discussion of variable scoping and details of pa- rameter passing are very well done. Although in the example at the end of section 5.5 backslashes do not show, the careful reader should have no problem noticing this typograph- ical error. The chapter on string ma- nipulations is especially well written for the reader interested in perl genomics applications. Good exam- ples can be actually used as a part of useful perl modules and programs. Chapter 7, which covers input and output, is also very well written, al- though it also includes a few mis- prints (e.g., on page 90, the line should read: die " Usage: $0 arg1 arg2 arg3 " ;). Although I would personally like to see more discussion of type globs and input redirection here, I do agree that this chapter covers in a user-friendly manner most of the practical perl usage in this area. My only unfavor- able comment has to do with the typesetting, the inconsistent use of accents [ticks (') and back-ticks ()], and a confusing sentence: “The kill() command allows you to execute the process”. The last chapter of this part, which deals with perl modules, is probably too short to explain them in the nec- essary detail. At the same time, the primary perl reference, coauthored by the perl creator Larry Wall, is in my humble opinion no better. This is a powerful but quite difficult part of perl, and more demanding readers will have to consult other sources (e.g., Advanced Perl Programming by Sriram Srinivasan available from O’Reilly Publishers). The last part of the book, “Ad- vanced Perl”, is the hardest to read and follow, especially for the ad- vancing perl programmer. Although the chapter on references is quite good, with thoughtful examples, the next chapters, on object-oriented pro- gramming and Bioperl, could easily be expanded with more practical ex- amples and case studies. I also no- ticed multiple misprints of = (used to assign a value to a key in the hash initialization) instead of the -oper- ator (a pointer to a value in a list). The book ends with appendices, “Partial Perl Reference” and “Bioin- formatics File Formats”, which are of limited utility because they do not provide sufficient detail and practi- cal information on use. The perl ref- erence sends a user to a perldoc utility without even explaining how to use it and neglects to inform the user about a plethora of man pages Book, Software, and Web Site Reviews Clinical Chemistry 50, No. 2, 2004 459 Downloaded from https://academic.oup.com/clinchem/article/50/2/459/5639644 by guest on 25 December 2021