Previous Page
Next Page

Book Cover
Perl Best Practices
By Damian Conway
...............................................
Publisher: O'Reilly
Pub Date: July 2005
ISBN: 0-596-00173-8
Pages: 542
 



Table of Contents  | Index

   Copyright
   Dedication
   Preface
      Contents of This Book
      Conventions Used in This Book
      Code Examples
      Feedback
      Acknowledgments
        Chapter 1.  Best Practices
      Section 1.1.  Three Goals
      Section 1.2.  This Book
      Section 1.3.  Rehabiting
        Chapter 2.  Code Layout
      Section 2.1.  Bracketing
      Section 2.2.  Keywords
      Section 2.3.  Subroutines and Variables
      Section 2.4.  Builtins
      Section 2.5.  Keys and Indices
      Section 2.6.  Operators
      Section 2.7.  Semicolons
      Section 2.8.  Commas
      Section 2.9.  Line Lengths
      Section 2.10.  Indentation
      Section 2.11.  Tabs
      Section 2.12.  Blocks
      Section 2.13.  Chunking
      Section 2.14.  Elses
      Section 2.15.  Vertical Alignment
      Section 2.16.  Breaking Long Lines
      Section 2.17.  Non-Terminal Expressions
      Section 2.18.  Breaking by Precedence
      Section 2.19.  Assignments
      Section 2.20.  Ternaries
      Section 2.21.  Lists
      Section 2.22.  Automated Layout
        Chapter 3.  Naming Conventions
      Section 3.1.  Identifiers
      Section 3.2.  Booleans
      Section 3.3.  Reference Variables
      Section 3.4.  Arrays and Hashes
      Section 3.5.  Underscores
      Section 3.6.  Capitalization
      Section 3.7.  Abbreviations
      Section 3.8.  Ambiguous Abbreviations
      Section 3.9.  Ambiguous Names
      Section 3.10.  Utility Subroutines
        Chapter 4.  Values and Expressions
      Section 4.1.  String Delimiters
      Section 4.2.  Empty Strings
      Section 4.3.  Single-Character Strings
      Section 4.4.  Escaped Characters
      Section 4.5.  Constants
      Section 4.6.  Leading Zeros
      Section 4.7.  Long Numbers
      Section 4.8.  Multiline Strings
      Section 4.9.  Here Documents
      Section 4.10.  Heredoc Indentation
      Section 4.11.  Heredoc Terminators
      Section 4.12.  Heredoc Quoters
      Section 4.13.  Barewords
      Section 4.14.  Fat Commas
      Section 4.15.  Thin Commas
      Section 4.16.  Low-Precedence Operators
      Section 4.17.  Lists
      Section 4.18.  List Membership
        Chapter 5.  Variables
      Section 5.1.  Lexical Variables
      Section 5.2.  Package Variables
      Section 5.3.  Localization
      Section 5.4.  Initialization
      Section 5.5.  Punctuation Variables
      Section 5.6.  Localizing Punctuation Variables
      Section 5.7.  Match Variables
      Section 5.8.  Dollar-Underscore
      Section 5.9.  Array Indices
      Section 5.10.  Slicing
      Section 5.11.  Slice Layout
      Section 5.12.  Slice Factoring
        Chapter 6.  Control Structures
      Section 6.1.  If Blocks
      Section 6.2.  Postfix Selectors
      Section 6.3.  Other Postfix Modifiers
      Section 6.4.  Negative Control Statements
      Section 6.5.  C-Style Loops
      Section 6.6.  Unnecessary Subscripting
      Section 6.7.  Necessary Subscripting
      Section 6.8.  Iterator Variables
      Section 6.9.  Non-Lexical Loop Iterators
      Section 6.10.  List Generation
      Section 6.11.  List Selections
      Section 6.12.  List Transformation
      Section 6.13.  Complex Mappings
      Section 6.14.  List Processing Side Effects
      Section 6.15.  Multipart Selections
      Section 6.16.  Value Switches
      Section 6.17.  Tabular Ternaries
      Section 6.18.  do-while Loops
      Section 6.19.  Linear Coding
      Section 6.20.  Distributed Control
      Section 6.21.  Redoing
      Section 6.22.  Loop Labels
        Chapter 7.  Documentation
      Section 7.1.  Types of Documentation
      Section 7.2.  Boilerplates
      Section 7.3.  Extended Boilerplates
      Section 7.4.  Location
      Section 7.5.  Contiguity
      Section 7.6.  Position
      Section 7.7.  Technical Documentation
      Section 7.8.  Comments
      Section 7.9.  Algorithmic Documentation
      Section 7.10.  Elucidating Documentation
      Section 7.11.  Defensive Documentation
      Section 7.12.  Indicative Documentation
      Section 7.13.  Discursive Documentation
      Section 7.14.  Proofreading
        Chapter 8.  Built-in Functions
      Section 8.1.  Sorting
      Section 8.2.  Reversing Lists
      Section 8.3.  Reversing Scalars
      Section 8.4.  Fixed-Width Data
      Section 8.5.  Separated Data
      Section 8.6.  Variable-Width Data
      Section 8.7.  String Evaluations
      Section 8.8.  Automating Sorts
      Section 8.9.  Substrings
      Section 8.10.  Hash Values
      Section 8.11.  Globbing
      Section 8.12.  Sleeping
      Section 8.13.  Mapping and Grepping
      Section 8.14.  Utilities
        Chapter 9.  Subroutines
      Section 9.1.  Call Syntax
      Section 9.2.  Homonyms
      Section 9.3.  Argument Lists
      Section 9.4.  Named Arguments
      Section 9.5.  Missing Arguments
      Section 9.6.  Default Argument Values
      Section 9.7.  Scalar Return Values
      Section 9.8.  Contextual Return Values
      Section 9.9.  Multi-Contextual Return Values
      Section 9.10.  Prototypes
      Section 9.11.  Implicit Returns
      Section 9.12.  Returning Failure
        Chapter 10.  I/O
      Section 10.1.  Filehandles
      Section 10.2.  Indirect Filehandles
      Section 10.3.  Localizing Filehandles
      Section 10.4.  Opening Cleanly
      Section 10.5.  Error Checking
      Section 10.6.  Cleanup
      Section 10.7.  Input Loops
      Section 10.8.  Line-Based Input
      Section 10.9.  Simple Slurping
      Section 10.10.  Power Slurping
      Section 10.11.  Standard Input
      Section 10.12.  Printing to Filehandles
      Section 10.13.  Simple Prompting
      Section 10.14.  Interactivity
      Section 10.15.  Power Prompting
      Section 10.16.  Progress Indicators
      Section 10.17.  Automatic Progress Indicators
      Section 10.18.  Autoflushing
        Chapter 11.  References
      Section 11.1.  Dereferencing
      Section 11.2.  Braced References
      Section 11.3.  Symbolic References
      Section 11.4.  Cyclic References
        Chapter 12.  Regular Expressions
      Section 12.1.  Extended Formatting
      Section 12.2.  Line Boundaries
      Section 12.3.  String Boundaries
      Section 12.4.  End of String
      Section 12.5.  Matching Anything
      Section 12.6.  Lazy Flags
      Section 12.7.  Brace Delimiters
      Section 12.8.  Other Delimiters
      Section 12.9.  Metacharacters
      Section 12.10.  Named Characters
      Section 12.11.  Properties
      Section 12.12.  Whitespace
      Section 12.13.  Unconstrained Repetitions
      Section 12.14.  Capturing Parentheses
      Section 12.15.  Captured Values
      Section 12.16.  Capture Variables
      Section 12.17.  Piecewise Matching
      Section 12.18.  Tabular Regexes
      Section 12.19.  Constructing Regexes
      Section 12.20.  Canned Regexes
      Section 12.21.  Alternations
      Section 12.22.  Factoring Alternations
      Section 12.23.  Backtracking
      Section 12.24.  String Comparisons
        Chapter 13.  Error Handling
      Section 13.1.  Exceptions
      Section 13.2.  Builtin Failures
      Section 13.3.  Contextual Failure
      Section 13.4.  Systemic Failure
      Section 13.5.  Recoverable Failure
      Section 13.6.  Reporting Failure
      Section 13.7.  Error Messages
      Section 13.8.  Documenting Errors
      Section 13.9.  OO Exceptions
      Section 13.10.  Volatile Error Messages
      Section 13.11.  Exception Hierarchies
      Section 13.12.  Processing Exceptions
      Section 13.13.  Exception Classes
      Section 13.14.  Unpacking Exceptions
        Chapter 14.  Command-Line Processing
      Section 14.1.  Command-Line Structure
      Section 14.2.  Command-Line Conventions
      Section 14.3.  Meta-options
      Section 14.4.  In-situ Arguments
      Section 14.5.  Command-Line Processing
      Section 14.6.  Interface Consistency
      Section 14.7.  Interapplication Consistency
        Chapter 15.  Objects
      Section 15.1.  Using OO
      Section 15.2.  Criteria
      Section 15.3.  Pseudohashes
      Section 15.4.  Restricted Hashes
      Section 15.5.  Encapsulation
      Section 15.6.  Constructors
      Section 15.7.  Cloning
      Section 15.8.  Destructors
      Section 15.9.  Methods
      Section 15.10.  Accessors
      Section 15.11.  Lvalue Accessors
      Section 15.12.  Indirect Objects
      Section 15.13.  Class Interfaces
      Section 15.14.  Operator Overloading
      Section 15.15.  Coercions
        Chapter 16.  Class Hierarchies
      Section 16.1.  Inheritance
      Section 16.2.  Objects
      Section 16.3.  Blessing Objects
      Section 16.4.  Constructor Arguments
      Section 16.5.  Base Class Initialization
      Section 16.6.  Construction and Destruction
      Section 16.7.  Automating Class Hierarchies
      Section 16.8.  Attribute Demolition
      Section 16.9.  Attribute Building
      Section 16.10.  Coercions
      Section 16.11.  Cumulative Methods
      Section 16.12.  Autoloading
        Chapter 17.  Modules
      Section 17.1.  Interfaces
      Section 17.2.  Refactoring
      Section 17.3.  Version Numbers
      Section 17.4.  Version Requirements
      Section 17.5.  Exporting
      Section 17.6.  Declarative Exporting
      Section 17.7.  Interface Variables
      Section 17.8.  Creating Modules
      Section 17.9.  The Standard Library
      Section 17.10.  CPAN
        Chapter 18.  Testing and Debugging
      Section 18.1.  Test Cases
      Section 18.2.  Modular Testing
      Section 18.3.  Test Suites
      Section 18.4.  Failure
      Section 18.5.  What to Test
      Section 18.6.  Debugging and Testing
      Section 18.7.  Strictures
      Section 18.8.  Warnings
      Section 18.9.  Correctness
      Section 18.10.  Overriding Strictures
      Section 18.11.  The Debugger
      Section 18.12.  Manual Debugging
      Section 18.13.  Semi-Automatic Debugging
        Chapter 19.  Miscellanea
      Section 19.1.  Revision Control
      Section 19.2.  Other Languages
      Section 19.3.  Configuration Files
      Section 19.4.  Formats
      Section 19.5.  Ties
      Section 19.6.  Cleverness
      Section 19.7.  Encapsulated Cleverness
      Section 19.8.  Benchmarking
      Section 19.9.  Memory
      Section 19.10.  Caching
      Section 19.11.  Memoization
      Section 19.12.  Caching for Optimization
      Section 19.13.  Profiling
      Section 19.14.  Enbugging
        Appendix A.  Essential Perl Best Practices
        Appendix B.  Perl Best Practices
      Section B.1.  Chapter 2, Code Layout
      Section B.2.  Chapter 3, Naming Conventions
      Section B.3.  Chapter 4, Values and Expressions
      Section B.4.  Chapter 5, Variables
      Section B.5.  Chapter 6, Control Structures
      Section B.6.  Chapter 7, Documentation
      Section B.7.  Chapter 8, Built-in Functions
      Section B.8.  Chapter 9, Subroutines
      Section B.9.  Chapter 10, I/O
      Section B.10.  Chapter 11, References
      Section B.11.  Chapter 12, Regular Expressions
      Section B.12.  Chapter 13, Error Handling
      Section B.13.  Chapter 14, Command-Line Processing
      Section B.14.  Chapter 15, Objects
      Section B.15.  Chapter 16, Class Hierarchies
      Section B.16.  Chapter 17, Modules
      Section B.17.  Chapter 18, Testing and Debugging
      Section B.18.  Chapter 19, Miscellanea
        Appendix C.  Editor Configurations
      Section C.1.  vim
      Section C.2.  vile
      Section C.3.  Emacs
      Section C.4.  BBEdit
      Section C.5.  TextWrangler
        Appendix D.  Recommended Modules and Utilities
      Section D.1.  Recommended Core Modules
      Section D.2.  Recommended CPAN Modules
      Section D.3.  Utility Subroutines
    Appendix Bibliography.  Bibliography
   Colophon
      About the Author
      Colophon
   Index

Previous Page
Next Page