| Preface |
|
Perl or Perl? |
|
Obtaining Perl |
|
Historical Perl |
|
Who This Book Is For |
|
Typographical Conventions |
|
For Further Reference |
|
Perl Versions |
|
Perl 6 |
|
Acknowledgements |
| Chapter 1 |
Introduction (First Reponse) |
| 1.1 |
First Things First |
| 1.2 |
Reasons for Inheritance |
| 1.3 |
What Next? |
| 1.4 |
Observe the Program in Its Natural Habitat |
| 1.5 |
Get Personal |
| 1.6 |
Strictness |
| 1.7 |
Warnings |
| Chapter 2 |
Surveying the Scene |
| 2.1 |
Versions |
| 2.2 |
Part or Whole? |
| 2.3 |
Find the Dependenciess |
| Chapter 3 |
Test Now, Test Forever (Diagnosis) |
| 3.1 |
Testing Your Patience |
| 3.2 |
Extreme Testing |
| 3.3 |
An Example Using Test::Modules |
| 3.4 |
Testing Legacy Code |
| 3.5 |
A Final Encouragement |
| Chapter 4 |
|
| 4.1 |
Strategizing |
| 4.2 |
Why Are You Doing This? |
| 4.3 |
Style |
| 4.4 |
Comments |
| 4.5 |
Restyling |
| 4.6 |
Variable Renaming |
| 4.7 |
Editing |
| 4.8 |
Line Editing |
| 4.9 |
Antipatterns |
| 4.10 |
Evolution |
| Chapter 5 |
The Disciplined Perl Program |
| 5.1 |
Package Variables vs. Lexical Variables |
| 5.2 |
Warnings and strictness |
| 5.3 |
use strict in Detail |
| 5.4 |
use warnings in Detail |
| 5.5 |
Selective Disabling |
| 5.6 |
Caveat Programmer |
| 5.7 |
Perl Poetry |
| Chapter 6 |
Restructuring (The Operating Table) |
| 6.1 |
Keep It Brief |
| 6.2 |
Cargo Cult Perl |
| 6.3 |
Escaping the Global Variable Trap |
| 6.4 |
Debugging the Strategies |
| Chapter 7 |
Upgrading (Plastic Surgery) |
| 7.1 |
Stragegies |
| 7.2 |
Perl 4 |
| 7.3 |
Perl 5.000 |
| 7.4 |
Perl 5.001 |
| 7.5 |
Perl 5.002 |
| 7.6 |
Perl 5.003 |
| 7.7 |
Perl 5.004 |
| 7.8 |
Perl 5.005 |
| 7.9 |
Perl 5.6.0 |
| 7.10 |
Perl 5.6.1 |
| 7.11 |
Perl 5.8.0 |
| 7.12 |
Perl 5.8.1 |
| 7.13 |
Perl 5.8.2 |
| 7.14 |
Perl 5.8.3 |
| Chapter 8 |
Using Modules (Genetic Enhancement) |
| 8.1 |
The Case for CPAN |
| 8.2 |
Using CPAN |
| 8.3 |
Improving Code with Modules |
| 8.4 |
Custom Perls |
| Chapter 9 |
Analysis (Forensic Pathology) |
| 9.1 |
Static Analysis |
| 9.2 |
Eliminating Superfluous Code |
| 9.3 |
Finding Inefficient Code |
| 9.4 |
Debugging |
| Chapter 10 |
Increasing Maintainability (Prophylaxis) |
| 10.1 |
Making it Robust |
| 10.2 |
Advanced Brevity |
| 10.3 |
Documentation |
| 10.4 |
Custom Warnings |
| 10.5 |
Version Control System Integration |
| Chapter 11 |
A Case Study |
| 11.1 |
The Setup |
| 11.2 |
Triage |
| 11.3 |
Desperately Seeking Sanity |
| 11.4 |
Coming into the 21st Century |
| 11.5 |
Incorporating Modules Effectively, Part 1 |
| 11.6 |
Incorporating Modules Effectively, Part 2 |
| 11.7 |
Making It Mature, Part 1 |
| 11.8 |
Making It Mature, Part 2 |
| 11.9 |
Making It Mature, Part 3 |
| 11.10 |
Advanced Modification |
| Chapter 12 |
|
| 12.1 |
In Conclusion |
| 12.2 |
Perl People |
| 12.3 |
A Final Thought |
| Appendix: |
Source Code |
|
Tie::Array::Bounded |
|
Benchmark::TimeTick |
|
smallprofpp |
|
|
| Bibliography |
| Index |
| About the Author |
| Top of Table of Contents | Perl Medic Website |