Programming the Network with Perl: A Book Review

Title: Programming the Network with PerlAuthor: Paul BarryPublisher: John Wiley & Sons, Ltd.URL: glasnost.itcarlow.ie/~pnb/index.html
The focus of Programming the Network with Perl, by Paul Barry, is the network infrastructure: packets and protocols. Perl is the tool that he uses to illustrate and manipulate the network.
Mr. Barry is a lecturer on Computer Networking at the Institute of Technology, Carlow in Ireland. His book is based upon his experiences using Perl to teach students how to program and debug network communications. He uses Perl for this so that students can devote more time to understanding the network instead of working to understand a difficult programming language.
The book consists of six chapters and five appendices. Each chapter starts by explaining the purpose of the material that will be presented. Then a sample application is presented and refined as the chapter progresses with an explanation of why each change was made. Each chapter ends with a list of web and print resources for further study and a set of exercises to test the reader's understanding of the chapter.
The applications in the book make use of several Perl modules available from CPAN as the underpinnings for network manipulation. You don't have to be a Perl expert to use this book, however. This first chapter offers a brief but useful introduction to Perl for non-Perl programmers. In addition, the programs in the book showcase useful code, such as writing to a log file and forking a process.
The second chapter covers installing the Perl modules required to work with network packets and then explains how to build a network sniffer. The sniffer application undergoes several refinements until it becomes a full-fledged network diagnostic and logging tool.
The next two chapters cover network programming with sockets and common protocols. Example programs illustrate the differences between sending data with UDP and TCP transport mechanisms. Other programs make use of the HTTP, SMTP, NNTP and Telnet protocols.
Chapter 5 deals with using Perl to manage network devices with ICMP (Internet Control Message Protocol) and SNMP(Simple Network Management Protocol). The bulk of the chapter discusses SNMP and using Perl's Net::SNMP module.
In the final chapter Mobile Agents are discussed. Mobile Agents are a combination of program and state data that can move to a machine over the network, execute on that machine and then move again. This is different than the typical client-server method, where a program runs on one machine and requests data from other machines.
My few complaints with the book really don't have anything to do with the material itself. Mr. Barry provides short instructions for downloading and installing Perl modules by hand, but he doesn't mention using Perl's CPAN module to do this automatically. I had difficulty installing the modules by hand on my machine, but I was able to get everything installed using the CPAN module. Offering this method as well in the book might help other people.
I also had some difficulty matching the sample programs downloaded from the author's web site with the programs presented in the text. In the book the program listings are broken up by text, which can make them difficult to enter. Perhaps a single program listing with a caption that matches the filenames of the downloaded programs, or at least a standard header comment in the listings supplying the program name, would help.
Programming the Network with Perl is meant to teach a programmer how to program network applications and understand the underlying network transport mechanisms. Perl is the tool by which this is accomplished. Mr. Barry provides plenty of clear explanation for each topic that he covers.
Ralph Krause (www.netperson.net/~rkrause) is a writer, computer programmer and webmaster who lives in Michigan. He has been tinkering with computers for the past 20 years and with Linux for over three years.
email: rkrause@netperson.net
Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.
Sponsored by AMD
Built-in forensics, incident response, and security with Red Hat Enterprise Linux 6
Every security policy provides guidance and requirements for ensuring adequate protection of information and data, as well as high-level technical and administrative security requirements for a system in a given environment. Traditionally, providing security for a system focuses on the confidentiality of the information on it. However, protecting the data integrity and system and data availability is just as important. For example, when processing United States intelligence information, there are three attributes that require protection: confidentiality, integrity, and availability.
Learn more about catching the bad guy in this free white paper.
Sponsored by DLT Solutions
| Designing Electronics with Linux | May 22, 2013 |
| Dynamic DNS—an Object Lesson in Problem Solving | May 21, 2013 |
| Using Salt Stack and Vagrant for Drupal Development | May 20, 2013 |
| Making Linux and Android Get Along (It's Not as Hard as It Sounds) | May 16, 2013 |
| Drupal Is a Framework: Why Everyone Needs to Understand This | May 15, 2013 |
| Home, My Backup Data Center | May 13, 2013 |
- Designing Electronics with Linux
- New Products
- Making Linux and Android Get Along (It's Not as Hard as It Sounds)
- Dynamic DNS—an Object Lesson in Problem Solving
- Linux Systems Administrator
- Senior Perl Developer
- Technical Support Rep
- UX Designer
- Web & UI Developer (JavaScript & j Query)
- Using Salt Stack and Vagrant for Drupal Development
- Reply to comment | Linux Journal
3 hours 20 min ago - Dynamic DNS
3 hours 54 min ago - Reply to comment | Linux Journal
4 hours 52 min ago - Reply to comment | Linux Journal
5 hours 42 min ago - Not free anymore
9 hours 44 min ago - Great
13 hours 32 min ago - Reply to comment | Linux Journal
13 hours 40 min ago - Understanding the Linux Kernel
15 hours 54 min ago - General
18 hours 24 min ago - Kernel Problem
1 day 4 hours ago
Enter to Win an Adafruit Pi Cobbler Breakout Kit for Raspberry Pi

It's Raspberry Pi month at Linux Journal. Each week in May, Adafruit will be giving away a Pi-related prize to a lucky, randomly drawn LJ reader. Winners will be announced weekly.
Fill out the fields below to enter to win this week's prize-- a Pi Cobbler Breakout Kit for Raspberry Pi.
Congratulations to our winners so far:
- 5-8-13, Pi Starter Pack: Jack Davis
- 5-15-13, Pi Model B 512MB RAM: Patrick Dunn
- 5-21-13, Prototyping Pi Plate Kit: Philip Kirby
- Next winner announced on 5-27-13!
Featured Jobs
| Linux Systems Administrator | Houston and Austin, Texas | Host Gator |
| Senior Perl Developer | Austin, Texas | Host Gator |
| Technical Support Rep | Houston and Austin, Texas | Host Gator |
| UX Designer | Austin, Texas | Host Gator |
| Web & UI Developer (JavaScript & j Query) | Austin, Texas | Host Gator |
Free Webinar: Hadoop
How to Build an Optimal Hadoop Cluster to Store and Maintain Unlimited Amounts of Data Using Microservers
Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.
Some of key questions to be discussed are:
- What is the “typical” Hadoop cluster and what should be installed on the different machine types?
- Why should you consider the typical workload patterns when making your hardware decisions?
- Are all microservers created equal for Hadoop deployments?
- How do I plan for expansion if I require more compute, memory, storage or networking?



Comments
Re: Programming the Network with Perl: A Book Review
How does it compare to the book from L.D. Stein, "Network programming in Perl"?
Re: Comparing Books
A (short) interview with Paul Barry is here, and this question comes up.
Compared to L. Stein's book??
Please see the discussion on this very topic on the use.perl.org website. Thanks.