The following book reviews are the copyright of their respective authors and no part should be reproduced without the express permission of the author. Publishers and Authors of the books reviewed may reproduce the whole or extracts of a review for their book. To request copyright permission please email firstname.lastname@example.org.
All the reviews herein are the opinions of the reviewer and are not necessarily the views of Birmingham Perl Mongers and its members. If you feel a review or comment has been made in error, please contact email@example.com to rectify the situation.
Static Link: http://birmingham.pm.org/reviews/15
|Author(s):||Reuven M. Lerner|
Core Perl describes itself as 'The Serious Developer's Guide to Perl', and aims at programmers who are experienced in other languages but need to get up to speed with Perl.
After a few chapters covering the essentials such as program structure, variables and the like, the author gets going on some of Perl's more advanced or unusual facilities. Among the concepts covered are modules and packages, OOP, the CPAN (Comprehensive Perl Archive Network), database integration with DBI, interprocess communication, and network communication (including writing socket code from scratch and using the 'Net::' series of modules). Interestingly, there is a complete chapter about tying variables to classes, one of many useful features which sets Perl apart from languages like Java and C.
Good programming practice is generally followed throughout the book. Apart from the obligatory 'Hello, World!' program, the very first line of code introduced by the author is 'use warnings;'. However we do not see 'use strict;' until page 104 of the book, and readers without prior Perl experience (which to be honest will be most of them) will have to wait until page 173 to find out what it's for!
On the plus side, we are later treated to a whole chapter about maintenance and security. As well as better explanations of 'use strict/warnings/diagnostics', this chapter covers Taint mode (a feature of Perl which forces external data to be validated before it can be used to affect anything outside of the program), debugging techniques, benchmarking, and code profiling.
Unsurprisingly, a large part of the book (5 chapters) is devoted to writing web applications. Again, best practice is followed - all of the examples use the CGI module, and there is no attempt to write yet another templating system (the CPAN modules Text::Template and HTML::Mason are used instead). I was also impressed with the information about mod_perl. As well as using it to speed up legacy CGI scripts, this chapter demonstrates some of the unique facilities offered by mod_perl, such as content filtering and URL manipulation.
Not all of the examples given are beneficial though. Section 14.2.4 tells us that "A common use of CGI is to send the contents of an HTML form as e-mail.", and gives some example code to do this. Unfortunately, the script takes both the 'From:' and 'To:' e-mail addresses from parameters submitted from a web page, effectively turning the web server into an open mail relay! This is just asking for trouble and is an open invitation to spammers. Why bother hacking a server if a back door has been installed? Hopefully the 'experienced developers' that the book is aimed at will realise this, but it would have made a better example to show that while Perl has good features to help with security, these cannot completely prevent a programmer from writing insecure code.
The author, Reuven M. Lerner, has quite an easygoing writing style. The level of detail is pitched about right - enough to hold interest and give ideas, but not so much that the reader is bogged down with technicalities. Where appropriate, references are made to the on-line documentation bundled with Perl if further reading is required. Presentation is also impressive, body text is in a very readable size, with nice bold headings and good use of whitespace.
So who would benefit from reading Core Perl? As well as the stated target audience of experienced developers, I would also consider this book to be suitable for engineers, IT students, and managers, i.e. people who are interested in evaluating the language and need to know what it is capable of and what it's limitations are. To this end, the author talks about Rapid Application Development, giving reasons why it is quicker to write a Perl program rather than the equivalent program in another language. He also discusses support and licensing issues, and gives a brief guide to installing Perl and CPAN modules.
In conclusion, while there are a few points which need to be resolved for the second edition, this book is a fine introduction to the Perl language.
We are one of the UK's largest Perl user groups, representing Birmingham UK to the international Perl community since 2000. We hold monthly social and technical presentations, and several of our members are now regular attendees and speakers at the YAPC::Europe Perl Conferences.
For further information about Birmingham.pm, please read our Frequently Asked Questions page.
For details about joining our mailing list, please Click Here for more details.
No meeting currently scheduled
11 May - Brum.pm Social
8 Jun - Brum.pm Social
13 Jul - Brum.pm Social
Download the Birmingham.pm ICalendar
or subscribe to our Google Calendar
Aberdeen Perl Mongers
Bath Perl Mongers
Birmingham Perl Mongers
Bristol Perl Mongers
Devon & Cornwall Perl Mongers
Edinburgh Perl Mongers
Glasgow Perl Mongers
London Perl Mongers
Milton Keynes Perl Mongers
North of England Perl Mongers
Nottingham Perl Mongers
Southampton Perl Mongers
Thames Valley Perl Mongers
• Linux System Programming
• Mastering Perl
• GIMP 2 for Photographers
• Minimal Perl
• Wicked Cool Perl Scripts
• Red Hat Linux 9 Unleashed
• IRC Hacks - 100 Industrial-Strength Tips & Tools
• eBay Hacks - 100 Industrial-Strength Tips & Tools
• Exploiting Software - How To Break Code
• Mac OS X Unleashed, 2nd Edition
* New Reviews
.. More Reviews