Preface
1. Advanced Regular Expressions
Readable Regexes, lx and ?#...
Global Matching
Global Match Anchors
Recursive Regular Expressions
Repeating a Subpattern
Lookarounds
Lookahead Assertions, ?=PATTERN and ?!PATTERN
Lookbehind Assertions, ?Debugging Regular Expressions
The -D Switch
Summary
Further Reading
2. Secure Programming Techniques
Bad Data Can Ruin Your Day
Taint Checking
Warnings Instead of Fatal Errors
Automatic Taint Mode
mod_perl
Tainted Data
Side Effects of Taint Checking
Untainting Data
IO::Handle::untaint
Hash Keys
Taint::Util
Choosing Untainted Data with Tainted Data
Symbolic References
Defensive Database Programming with DBI
List Forms of system and exec
Three-Argument open
sysopen
Limit Special Privileges
Safe Compartments
Safe Limitations
A Little Fun
Summary
Further Reading
3. Perl Debuggers
Before You Waste Too Much Time
The Best Debugger in the World
Safely Changing Modules
Wrapping Subroutines
The Perl Debugger
Alternative Debuggers
Using a Different Debugger with
Devel::ptkdb
Devel::ebug
Devel::hdb
IDE Debuggers
EPIC
Komodo
Summary
Further Reading
4. Profiling Perl
Finding the Culprit
The General Approach
Profiling DBI
Other DBI::Profrle Reports
Making It Even Easier
Switching Databases
DeveI::NYTProf
Writing My Own Profiler
DeveI::LineCounter
Profrling Test Suites
DeveI::Cover
Summary
……
5.Benchmarking Perl
6.Cleaning Up Perl
7.SymboITables and Typeglobs
8.Dynamic Subroutines.
9.Modifying and Jury-Rigging Modules
10.Configuring Perl Programs
11.Detecting and Reporting Errors
12.Logging.
13.Data Persistence.
14.Working with Pod
15.Working with Bits
16.The Magic of Tied Variables
17.Modules as Programs
A.Further Reading
B.brian''s Guide to Solving Any Perl Problem