Synopses & Reviews
Adopted as the undisputed Perl bible soon after the first edition appeared in 1991, Programming Perl is still the go-to guide for this highly practical language. Perl began life as a super-fueled text processing utility, but quickly evolved into a general purpose programming language thats helped hundreds of thousands of programmers, system administrators, and enthusiasts, like you, get your job done.
In this much-anticipated update to "the Camel," three renowned Perl authors cover the language up to its current version, Perl 5.14, with a preview of features in the upcoming 5.16. In a world where Unicode is increasingly essential for text processing, Perl offers the best and least painful support of any major language, smoothly integrating Unicode everywhere—including in Perls most popular feature: regular expressions.
Important features covered by this update include:
- New keywords and syntax
- I/O layers and encodings
- New backslash escapes
- Unicode 6.0
- Unicode grapheme clusters and properties
- Named captures in regexes
- Recursive and grammatical patterns
- Expanded coverage of CPAN
- Current best practices
When it comes to learning Perl, programmers consider this book to be the undisputed bible. You not only learn every nuance of this language, you also get a unique perspective on the evolution of Perl and its future direction. The 4th edition has been thoroughly updated for version 5.14, with details on regular expressions, support for UNICODE, threads, and many other features.
Many Perl books explain typeglobs, pseudohashes, and closures, but only this one shows the motivations behind these features and why they work the way they do. It's exactly what you'd expect from its prominent authors: Larry Wall is the inventor of Perl, and Tom Christiansen was one of the first champions of the language.
In print since 1991, the book affectionately known as "the Camel" has played a central role in computing among programmers and system administrators around the world. With Programming Perl, you too will learn the most efficient ways to use this language.
About the Author
Tom Christiansen is a freelance consultant specializing in Perl training and writing. After working for several years for TSR Hobbies (of Dungeons and Dragons fame), he set off for college where he spent a year in Spain and five in America, dabbling in music, linguistics, programming, and some half-dozen differentspoken languages. Tom finally escaped UW-Madison with undergraduate degrees in Spanish and computer science and a graduate degree in computer science. He then spent five years at Convex as a jack-of-all-trades working on everything from system administration to utility and kernel development, withcustomer support and training thrown in for good measure. Tom also served two terms on the USENIX Association Board of directors. With over thirty years' experience in Unix systems programming, Tom presents seminars internationally. Living in the foothills above Boulder, Colorado, Tom takes summers off for hiking, hacking, birding, music making, and gaming.
brian d foy is a prolific Perl trainer and writer, and runs The Perl Review to help people use and understand Perl through educational, consulting, code review, and more. He's a frequent speaker at Perl conferences. He's the coauthor of Learning Perl, Intermediate Perl, and Effective Perl Programming, and the author of Mastering Perl. He was an instructor and author for Stonehenge Consulting Services from 1998 to 2009, a Perl user since he was a physics graduate student, and a die-hard Mac user since he first owned a computer. He founded the first Perl user group, the New York Perl Mongers, as well as the Perl advocacy nonprofit Perl Mongers, Inc., which helped form more than 200 Perl user groups across the globe. He maintains the perlfaq portions of the core Perl documentation, several modules on CPAN, and some standalone scripts.
Larry Wall originally created Perl while a programmer at Unisys. He now works full time guiding the future development of the language. Larry is known for his idiosyncratic and thought-provoking approach to programming, as well as for his groundbreaking contributions to the culture of free software programming.
Jon Orwant founded The Perl Journal and received the White Camel lifetime achievement award for contributions to Perl in 2004. He's Engineering Manager at Google, where he leads Patent Search, visualizations, and digital humanities teams. For most of his tenure at Google, Jon worked on Book Search, and he developed the widely used Google Books Ngram Viewer. Prior to Google, he wasCTO of O'Reilly, Director of Research at France Telecom, and a Lecturer at MIT. Orwant received his doctorate from MIT's Electronic Publishing Group in 1999.
Table of Contents
Preface; The Pursuit of Happiness; What's New in This Edition; The Standard Distribution; Online Documentation; Offline Documentation; Additional Resources; Conventions Used in This Book; Using Code Examples; Acknowledgments; Safari® Books Online; We'd Like to Hear from You; Part I: Overview; Chapter 1: An Overview of Perl; 1.1 Getting Started; 1.2 Natural and Artificial Languages; 1.3 An Average Example; 1.4 Filehandles; 1.5 Operators; 1.6 Control Structures; 1.7 Regular Expressions; 1.8 List Processing; 1.9 What You Don't Know Won't Hurt You (Much); Part II: The Gory Details; Chapter 2: Bits and Pieces; 2.1 Atoms; 2.2 Molecules; 2.3 Built-in Data Types; 2.4 Variables; 2.5 Names; 2.6 Scalar Values; 2.7 Context; 2.8 List Values and Arrays; 2.9 Hashes; 2.10 Typeglobs and Filehandles; 2.11 Input Operators; Chapter 3: Unary and Binary Operators; 3.1 Terms and List Operators (Leftward); 3.2 The Arrow Operator; 3.3 Autoincrement and Autodecrement; 3.4 Exponentiation; 3.5 Ideographic Unary Operators; 3.6 Binding Operators; 3.7 Multiplicative Operators; 3.8 Additive Operators; 3.9 Shift Operators; 3.10 Named Unary and File Test Operators; 3.11 Relational Operators; 3.12 Equality Operators; 3.13 Smartmatch Operator; 3.14 Bitwise Operators; 3.15 C-Style Logical (Short-Circuit) Operators; 3.16 Range Operators; 3.17 Conditional Operator; 3.18 Assignment Operators; 3.19 Comma Operators; 3.20 List Operators (Rightward); 3.21 Logical and, or, not, and xor; 3.22 C Operators Missing from Perl; Chapter 4: Statements and Declarations; 4.1 Simple Statements; 4.2 Compound Statements; 4.3 if and unless Statements; 4.4 The given Statement; 4.5 Loop Statements; 4.6 The goto Operator; 4.7 Paleolithic Perl Case Structures; 4.8 The Ellipsis Statement; 4.9 Global Declarations; 4.10 Scoped Declarations; 4.11 Pragmas; Chapter 5: Pattern Matching; 5.1 The Regular Expression Bestiary; 5.2 Pattern-Matching Operators; 5.3 Metacharacters and Metasymbols; 5.4 Character Classes; 5.5 Quantifiers; 5.6 Positions; 5.7 Grouping and Capturing; 5.8 Alternation; 5.9 Staying in Control; 5.10 Fancy Patterns; Chapter 6: Unicode; 6.1 Show, Don't Tell; 6.2 Getting at Unicode Data; 6.3 A Case of Mistaken Identity; 6.4 Graphemes and Normalization; 6.5 Comparing and Sorting Unicode Text; 6.6 More Goodies; 6.7 References; Chapter 7: Subroutines; 7.1 Syntax; 7.2 Semantics; 7.3 Passing References; 7.4 Prototypes; 7.5 Subroutine Attributes; Chapter 8: References; 8.1 What Is a Reference?; 8.2 Creating References; 8.3 Using Hard References; 8.4 Symbolic References; 8.5 Braces, Brackets, and Quoting; Chapter 9: Data Structures; 9.1 Arrays of Arrays; 9.2 Hashes of Arrays; 9.3 Arrays of Hashes; 9.4 Hashes of Hashes; 9.5 Hashes of Functions; 9.6 More Elaborate Records; 9.7 Saving Data Structures; Chapter 10: Packages; 10.1 Symbol Tables; 10.2 Qualified Names; 10.3 The Default Package; 10.4 Changing the Package; 10.5 Autoloading; Chapter 11: Modules; 11.1 Loading Modules; 11.2 Unloading Modules; 11.3 Creating Modules; 11.4 Overriding Built-in Functions; Chapter 12: Objects; 12.1 Brief Refresher on Object-Oriented Lingo; 12.2 Perl's Object System; 12.3 Method Invocation; 12.4 Object Construction; 12.5 Class Inheritance; 12.6 Instance Destructors; 12.7 Managing Instance Data; 12.8 Managing Class Data; 12.9 The Moose in the Room; 12.10 Summary; Chapter 13: Overloading; 13.1 The overload Pragma; 13.2 Overload Handlers; 13.3 Overloadable Operators; 13.4 The Copy Constructor (=); 13.5 When an Overload Handler Is Missing (nomethod and fallback); 13.6 Overloading Constants; 13.7 Public Overload Functions; 13.8 Inheritance and Overloading; 13.9 Runtime Overloading; 13.10 Overloading Diagnostics; Chapter 14: Tied Variables; 14.1 Tying Scalars; 14.2 Tying Arrays; 14.3 Tying Hashes; 14.4 Tying Filehandles; 14.5 A Subtle Untying Trap; 14.6 Tie Modules on CPAN; Part III: Perl as Technology; Chapter 15: Interprocess Communication; 15.1 Signals; 15.2 Files; 15.3 Pipes; 15.4 System V IPC; 15.5 Sockets; Chapter 16: Compiling; 16.1 The Life Cycle of a Perl Program; 16.2 Compiling Your Code; 16.3 Executing Your Code; 16.4 Compiler Backends; 16.5 Code Generators; 16.6 Code Development Tools; 16.7 Avant-Garde Compiler, Retro Interpreter; Chapter 17: The Command-Line Interface; 17.1 Command Processing; 17.2 Environment Variables; Chapter 18: The Perl Debugger; 18.1 Using the Debugger; 18.2 Debugger Commands; 18.3 Debugger Customization; 18.4 Unattended Execution; 18.5 Debugger Support; 18.6 Profiling Perl; Chapter 19: CPAN; 19.1 History; 19.2 A Tour of the Repository; 19.3 The CPAN Ecosystem; 19.4 Installing CPAN Modules; 19.5 Creating CPAN Distributions; Part IV: Perl as Culture; Chapter 20: Security; 20.1 Handling Insecure Data; 20.2 Handling Timing Glitches; 20.3 Handling Insecure Code; Chapter 21: Common Practices; 21.1 Common Goofs for Novices; 21.2 Efficiency; 21.3 Programming with Style; 21.4 Fluent Perl; 21.5 Program Generation; Chapter 22: Portable Perl; 22.1 Newlines; 22.2 Endianness and Number Width; 22.3 Files and Filesystems; 22.4 System Interaction; 22.5 Interprocess Communication (IPC); 22.6 External Subroutines (XS); 22.7 Standard Modules; 22.8 Dates and Times; 22.9 Internationalization; 22.10 Style; Chapter 23: Plain Old Documentation; 23.1 Pod in a Nutshell; 23.2 Pod Translators and Modules; 23.3 Writing Your Own Pod Tools; 23.4 Pod Pitfalls; 23.5 Documenting Your Perl Programs; Chapter 24: Perl Culture; 24.1 History Made Practical; 24.2 Perl Poetry; 24.3 Virtues of the Perl Programmer; 24.4 Events; 24.5 Getting Help; Part V: Reference Material; Chapter 25: Special Names; 25.1 Special Names Grouped by Type; 25.2 Special Variables in Alphabetical Order; Chapter 26: Formats; 26.1 String Formats; 26.2 Binary Formats; 26.3 Picture Formats; Chapter 27: Functions; 27.1 Perl Functions by Category; 27.2 Perl Functions in Alphabetical Order; Chapter 28: The Standard Perl Library; 28.1 Library Science; 28.2 A Tour of the Perl Library; Chapter 29: Pragmatic Modules; 29.1 attributes; 29.2 autodie; 29.3 autouse; 29.4 base; 29.5 bigint; 29.6 bignum; 29.7 bigrat; 29.8 blib; 29.9 bytes; 29.10 charnames; 29.11 constant; 29.12 deprecate; 29.13 diagnostics; 29.14 encoding; 29.15 feature; 29.16 fields; 29.17 filetest; 29.18 if; 29.19 inc::latest; 29.20 integer; 29.21 less; 29.22 lib; 29.23 locale; 29.24 mro; 29.25 open; 29.26 ops; 29.27 overload; 29.28 overloading; 29.29 parent; 29.30 re; 29.31 sigtrap; 29.32 sort; 29.33 strict; 29.34 subs; 29.35 threads; 29.36 utf8; 29.37 vars; 29.38 version; 29.39 vmsish; 29.40 warnings; 29.41 User-Defined Pragmas; Index of Perl Modules in This Book; Colophon;