Here is the final table of contents for Effective Perl Programming, 2nd Edition. The “Item” references in our blog entries refer to the items in the book. We also have a map from the Item numbers in the first edition to those in the second, but we’ll have to do a little work to make those look nice for the blog.
- Chapter 1: The Basics of Perl
- Item 1. Find the documentation for Perl and its modules.
- Item 2. Enable new Perl features when you need them.
- Item 3. Enable strictures to promote better coding.
- Item 4. Understand what sigils are telling you.
- Item 5. Know your variable namespaces.
- Item 6. Know the difference between string and numeric comparisons.
- Item 7. Know which values are false and test them accordingly.
- Item 8. Understand conversions between strings and numbers.
- Item 9. Know the difference between lists and arrays.
- Item 10. Don’t assign undef when you want an empty array.
- Item 11. Avoid a slice when you want an element.
- Item 12. Understand context and how it affects operations.
- Item 13. Use arrays or hashes to group data.
- Item 14. Handle big numbers with bignum.
- Chapter 2: Idiomatic Perl
- Item 15. Use $_ for elegance and brevity.
- Item 16. Know Perl’s other default arguments.
- Item 17. Know common shorthand and syntax quirks.
- Item 18. Avoid excessive punctuation.
- Item 19. Format lists for easy maintenance.
- Item 20. Use foreach, map, and grep as appropriate.
- Item 21. Know the different ways to quote strings.
- Item 22. Learn the myriad ways of sorting.
- Item 23. Make work easier with smart matching.
- Item 24. Use given-when to make a switch statement.
- Item 25. Use do {} to create inline subroutines.
- Item 26. Use List::Util and List::MoreUtils for easy list manipulation.
- Item 27. Use autodie to simplify error handling.
- Chapter 3: Regular Expressions
- Item 28. Know the precedence of regular expression operators.
- Item 29. Use regular expression captures.
- Item 30. Use more precise whitespace character classes.
- Item 31. Use named captures to label matches.
- Item 32. Use noncapturing parentheses when you need only grouping.
- Item 33. Watch out for the match variables.
- Item 34. Avoid greed when parsimony is best.
- Item 35. Use zero-width assertions to match positions in a string.
- Item 36. Avoid using regular expressions for simple string operations.
- Item 37. Make regular expressions readable.
- Item 38. Avoid unnecessary backtracking.
- Item 39. Compile regexes only once.
- Item 40. Pre-compile regular expressions.
- Item 41. Benchmark your regular expressions.
- Item 42. Don’t reinvent the regex.
- Chapter 4: Subroutines
- Item 43. Understand the difference between my and local.
- Item 44. Avoid using @_ directly unless you have to.
- Item 45. Use wantarray to write subroutines returning lists.
- Item 46. Pass references instead of copies.
- Item 47. Use hashes to pass named parameters.
- Item 48. Use prototypes to get special argument parsing.
- Item 49. Create closures to lock in data.
- Item 50. Create new subroutines with subroutines.
- Chapter 5: Files and Filehandles
- Item 51. Don’t ignore the file test operators.
- Item 52. Always use the three-argument open.
- Item 53. Consider different ways of reading from a stream.
- Item 54. Open filehandles to and from strings.
- Item 55. Make flexible output.
- Item 56. Use File::Spec or Path::Class to work with paths.
- Item 57. Leave most of the data on disk to save memory.
- Chapter 6: References
- Item 58. Understand references and reference syntax.
- Item 59. Compare reference types to prototypes.
- Item 60. Create arrays of arrays with references.
- Item 61. Don’t confuse anonymous arrays with list literals.
- Item 62. Build C-style structs with anonymous hashes.
- Item 63. Be careful with circular data structures.
- Item 64. Use map and grep to manipulate complex data structures.
- Chapter 7: CPAN
- Item 65. Install CPAN modules without admin privileges.
- Item 66. Carry a CPAN with you.
- Item 67. Mitigate the risk of public code.
- Item 68. Research modules before you install them.
- Item 69. Ensure that Perl can find your modules.
- Item 70. Contribute to CPAN.
- Item 71. Know the commonly used modules.
- Chapter 8: Unicode
- Item 72. Use Unicode in your source code.
- Item 73. Tell Perl which encoding to use.
- Item 74. Specify Unicode characters by code point or name.
- Item 75. Convert octet strings to character strings.
- Item 76. Match Unicode characters and properties.
- Item 77. Work with graphemes instead of characters.
- Item 78. Be careful with Unicode in your databases.
- Chapter 9: Distributions
- Item 79. Use Module::Build as your distribution builder.
- Item 80. Don’t start distributions by hand.
- Item 81. Choose a good module name.
- Item 82. Embed your documentation with Pod.
- Item 83. Limit your distributions to the right platforms.
- Item 84. Check your Pod.
- Item 85. Inline code for other languages.
- Item 86. Use XS for low-level interfaces and speed.
- Chapter 10: Testing
- Item 87. Use prove for flexible test runs.
- Item 88. Run tests only when they make sense.
- Item 89. Use dependency injection to avoid special test logic.
- Item 90. Don’t require more than you need to use in your methods.
- Item 91. Write programs as modulinos for easy testing.
- Item 92. Mock objects and interfaces to focus tests.
- Item 93. Use SQLite to create test databases.
- Item 94. Use Test::Class for more structured testing.
- Item 95. Start testing at the beginning of your project.
- Item 96. Measure your test coverage.
- Item 97. Use CPAN Testers as your QA team.
- Item 98. Set up a continuous build system.
- Chapter 11: Warnings
- Item 99. Enable warnings to let Perl spot suspicious code.
- Item 100. Use lexical warnings to selectively turn on or off complaints.
- Item 101. Use die to generate exceptions.
- Item 102. Use Carp to get stack traces.
- Item 103. Handle exceptions properly.
- Item 104. Track dangerous data with taint checking.
- Item 105. Start with taint warnings for legacy code.
- Chapter 12: Databases
- Item 106. Prepare your SQL statements to reuse work and save time.
- Item 107. Use SQL placeholders for automatic value quoting.
- Item 108. Bind return columns for faster access to data.
- Item 109. Reuse database connections.
- Chapter 13: Miscellany
- Item 110. Compile and install your own perls.
- Item 111. Use Perl::Tidy to beautify code.
- Item 112. Use Perl Critic.
- Item 113. Use Log::Log4perl to record your program’s state.
- Item 114. Know when arrays are modified in a loop.
- Item 115. Don’t use regular expressions for comma-separated values.
- Item 116. Use unpack to process columnar data.
- Item 117. Use pack and unpack for data munging.
- Item 118. Access the symbol table with typeglobs.
- Item 119. Initialize with BEGIN; finish with END.
- Item 120. Use Perl one-liners to create mini programs.