Skip to content

Intermediate Perl Beyond the Basics of Learning Perl

Spend $50 to get a free DVD!

ISBN-10: 1449393098

ISBN-13: 9781449393090

Edition: 2nd 2011

Authors: Tom Phoenix, Randal L. Schwartz, brian d foy

List price: $47.99
Blue ribbon 30 day, 100% satisfaction guarantee!
Out of stock
what's this?
Rush Rewards U
Members Receive:
Carrot Coin icon
XP icon
You have reached 400 XP and carrot coins. That is the daily max!


Get a clear roadmap for improving your skills with Intermediate Perl, and gain working knowledge of Perl's objects, references, and modules-ingredients that make the language so versatile and effective. Written by the authors of the bestselling Llama book, Learning Perl, and updated for Perl 5.14, this book offers a gentle but thorough introduction to intermediate programming in Perl. Each chapter is small enough to be read in just an hour or two, ending with a series of exercises to help you practice what you've learned. If you're familiar with the material in Learning Perl and have the ambition learn more, this book will take you much further into Perl's capabilities. Topics include:…    
Customers also bought

Book details

List price: $47.99
Edition: 2nd
Copyright year: 2011
Publisher: O'Reilly Media, Incorporated
Publication date: 8/16/2012
Binding: Paperback
Pages: 396
Size: 7.00" wide x 9.25" long x 1.00" tall
Weight: 1.342
Language: English

Tom Phoenix has been working in the field of education since 1982. After more than thirteen years of dissections, explosions, work with interesting animals, and high-voltage sparks during his work at a science museum, he started teaching Perl classes for Stonehenge Consulting Services, where he's worked since 1996. Since then, he has traveled to many interesting locations, so you might see him soon at a Perl Mongers' meeting. When he has time, he answers questions on Usenet's comp.lang.perl.misc and comp.lang.perl.moderated newsgroups, and contributes to the development and usefulness of Perl. Besides his work with Perl, Perl hackers, and related topics, Tom spends his time on amateur…    

Randal L. Schwartz is a two-decade veteran of the software industry. He is skilled in software design, system administration, security, technical writing, and training. Randal has coauthored the "must-have" standards: Programming Perl, Learning Perl, Learning Perl for Win32 Systems, and Effective Perl Learning, and is a regular columnist for WebTechniques, PerformanceComputing, SysAdmin, and Linux magazines. He is also a frequent contributor to the Perl newsgroups, and has moderated comp.lang.perl.announce since its inception. His offbeat humor and technical mastery have reached legendary proportions worldwide (but he probably started some of those legends himself). Randal's desire to give…    

What Should You Know Already?
strict and warnings
Perl v5.14
A Note on Versions
What About All Those Footnotes?
What's With the Exercises?
How to Get Help
What If I'm a Perl Course Instructor?
Using Modules
The Standard Distribution
Exploring CPAN
Using Modules
Functional Interfaces
Selecting What to Import
Object-Oriented Interfaces
A More Typical Object-Oriented Module: Math::BigInt
Fancier Output with Modules
What's in Core?
The Comprehensive Perl Archive Network
Installing Modules from CPAN
Installing Modules Manually
Setting the Path at the Right Time
Setting the Path Outside the Program
Extending @INC with PERL5LIB
Extending @INC on the Command Line
Intermediate Foundations
List Operators
List Filtering with grep
Transforming Lists with map
Trapping Errors with eval
Dynamic Code with eval
The do Block
Introduction to References
Doing the Same Task on Many Arrays
PeGS: Perl Graphical Structures
Taking a Reference to an Array
Dereferencing the Array Reference
Getting Our Braces Off
Modifying the Array
Nested Data Structures
Simplifying Nested Element References with Arrows
References to Hashes
Checking Reference Types
References and Scoping
More than One Reference to Data
What If That Was the Name?
Reference Counting and Nested Data Structures
When Reference Counting Goes Bad
Creating an Anonymous Array Directly
Creating an Anonymous Hash
Autovivification and Hashes
Manipulating Complex Data Structures
Using the Debugger to View Complex Data
Viewing Complex Data with Data::Dumper
Other Dumpers
Marshalling Data
Storing Complex Data with Storable
Using the map and grep Operators
Applying a Bit of Indirection
Selecting and Altering Complex Data
Subroutine References
Referencing a Named Subroutine
Anonymous Subroutines
Returning a Subroutine from a Subroutine
Closure Variables as Inputs
Closure Variables as Static Local Variables
state Variables
Finding Out Who We Are
Enchanting Subroutines
Dumping Closures
Filehandle References
The Old Way
The Improved Way
Filehandles to Strings
Processing Strings Line by Line
Collections of Filehandles
IO::Handle and Friends
IO::Null and IO::Interactive
Directory Handles
Directory Handle References
Regular Expression References
Before Regular Expression References
Precompiled Patterns
Regular Expression Options
Applying Regex References
Regexes as Scalars
Build Up Regular Expressions
Regex-Creating Modules
Using Common Patterns
Assembling Regular Expressions
Practical Reference Tricks
Fancier Sorting
Sorting with Indices
Sorting Efficiently
The Schwartzian Transform
Multilevel Sort with the Schwartzian Transform
Recursively Defined Data
Building Recursively Defined Data
Displaying Recursively Defined Data
Avoiding Recursion
The Breadth-First Solution
Building Larger Programs
The Cure for the Common Code
Inserting Code with eval
Using do
Using require
The Problem of Namespace Collisions
Packages as Namespace Separators
Scope of a Package Directive
Packages and Lexicals
Package Blocks
Creating Your Own Perl Distribution
Perl's Two Build Systems
Inside Makefile.PL
Inside Build.PL
Our First Distribution
Custom Templates
Inside Your Perl Distribution
The META File
Adding Additional Modules
Inside a Module
Plain Ol' Documentation
Pod Command Paragraphs
Pod Paragraphs
Pod Formatting Codes
Checking the Pod Format
The Module Code
Module Building Summary
Creating a Module::Build Distribution
Creating a ExtUtils::Makemaker Distribution
Introduction to Objects
If We Could Talk to the Animals…
Introducing the Method Invocation Arrow
The Extra Parameter of Method Invocation
Calling a Second Method to Simplify Things
A Few Notes About @ISA
Overriding the Methods
Starting the Search from a Different Place
The SUPER Way of Doing Things
What to Do with @_
Where We Are
Our Barnyard Summary
Introduction to Testing
Why Should We Test?
The Perl Testing Process
Test Anywhere Protocol
The Art of Testing
A Test Example
The Test Harness
The Standard Tests
Checking that Modules Compile
The Boilerplate Tests
The Pod Tests
Adding Our First Tests
Measuring Our Test Coverage
Subroutine Coverage
Statement Coverage
Branch Coverage
Conditional Coverage
Objects with Data
A Horse Is a Horse, of Course of Course-Or Is It?
Invoking an Instance Method
Accessing the Instance Data
How to Build a Horse
Inheriting the Constructor
Making a Method Work with Either Classes or Instances
Adding Parameters to a Method
More Interesting Instances
A Horse of a Different Color
Getting Our Deposit Back
Don't Look Inside the Box
Faster Getters and Setters
Getters that Double as Setters
Restricting a Method to Class Only or Instance Only
Some Advanced Object Topics
Testing Our Objects for Good Behavior
The Last Resort
Using AUTOLOAD for Accessors
Creating Getters and Setters More Easily
Multiple Inheritance
What use Is Doing
Importing with Exporter
Grouping with %EXPORT_TAGS
Custom Import Routines
Object Destruction
Cleaning Up After Ourselves
Nested Object Destruction
Beating a Dead Horse
Indirect Object Notation
Additional Instance Variables in Subclasses
Using Class Variables
Weakening the Argument
Introduction to Moose
Making Animals with Moose
Roles Instead of Inheritance
Default Values
Constraining Values
Wrapping Methods
Read-Only Attributes
Improving the Race Horse
Further Study
Advancing Testing
Skipping Tests
Testing Object-Oriented Features
Grouping Tests
Testing Large Strings
Testing Files
Using Mock Objects
Writing Our Own Test::* Modules
Contributing to CPAN
The Comprehensive Perl Archive Network
Getting Prepared
How PAUSE Works
The Indexer
Module Maintainers
Before We Start Work
Preparing the Distribution
Create or Update the README
Check the Build File
Update the Manifest
Increase the Version String
Test the Distribution
Uploading the Distribution
Testing on Multiple Platforms
Announcing the Module
Appendix: Answers to Exercises
Index of Modules in this Book