Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Intermediate Perl
SPECIAL OFFER: Upgrade this ebook with O’Reilly
A Note Regarding Supplemental Files
Foreword
Preface
Structure of This Book
Conventions Used in This Book
Using Code Examples
Comments and Questions
Safari® Enabled
Acknowledgments
1. Introduction
1.1. What Should You Know Already?
1.2. What About All Those Footnotes?
1.3. What's with the Exercises?
1.4. What If I'm a Perl Course Instructor?
2. Intermediate Foundations
2.1. List Operators
2.1.1. List Filtering with grep
2.1.2. Transforming Lists with map
2.2. Trapping Errors with eval
2.3. Dynamic Code with eval
2.4. Exercises
2.4.1. Exercise 1 [15 min]
2.4.2. Exercise 2 [25 min]
3. Using Modules
3.1. The Standard Distribution
3.2. Using Modules
3.3. Functional Interfaces
3.4. Selecting What to Import
3.5. Object-Oriented Interfaces
3.6. A More Typical Object-Oriented Module: Math::BigInt
3.7. The Comprehensive Perl Archive Network
3.8. Installing Modules from CPAN
3.9. Setting the Path at the Right Time
3.9.1. Handling Module Dependencies
3.10. Exercises
3.10.1. Exercise 1 [25 min]
3.10.2. Exercise 2 [35 min]
4. Introduction to References
4.1. Performing the Same Task on Many Arrays
4.2. Taking a Reference to an Array
4.3. Dereferencing the Array Reference
4.4. Getting Our Braces Off
4.5. Modifying the Array
4.6. Nested Data Structures
4.7. Simplifying Nested Element References with Arrows
4.8. References to Hashes
4.9. Exercises
4.9.1. Exercise 1 [5 min]
4.9.2. Exercise 2 [30 min]
5. References and Scoping
5.1. More Than One Reference to Data
5.2. What If That Was the Name?
5.3. Reference Counting and Nested Data Structures
5.4. When Reference Counting Goes Bad
5.5. Creating an Anonymous Array Directly
5.6. Creating an Anonymous Hash
5.7. Autovivification
5.8. Autovivification and Hashes
5.9. Exercises
5.9.1. Exercise 1 [5 min]
5.9.2. Exercise 2 [40 min]
6. Manipulating Complex Data Structures
6.1. Using the Debugger to View Complex Data
6.2. Viewing Complex Data with Data::Dumper
6.3. YAML
6.4. Storing Complex Data with Storable
6.5. Using the map and grep Operators
6.6. Applying a Bit of Indirection
6.7. Selecting and Altering Complex Data
6.8. Exercises
6.8.1. Exercise 1 [20 min]
6.8.2. Exercise 2 [5 min]
7. Subroutine References
7.1. Referencing a Named Subroutine
7.2. Anonymous Subroutines
7.3. Callbacks
7.4. Closures
7.5. Returning a Subroutine from a Subroutine
7.6. Closure Variables as Inputs
7.7. Closure Variables as Static Local Variables
7.8. Exercise
7.8.1. Exercise [50 min]
8. Filehandle References
8.1. The Old Way
8.2. The Improved Way
8.3. The Even Better Way
8.4. IO::Handle
8.4.1. IO::File
8.4.2. Anonymous IO::File Objects
8.4.3. IO::Scalar
8.4.4. IO::Tee
8.5. Directory Handle References
8.5.1. IO::Dir
8.6. Exercises
8.6.1. Exercise 1 [20 min]
8.6.2. Exercise 2 [30 min]
8.6.3. Exercise 3 [15 min]
9. Practical Reference Tricks
9.1. Review of Sorting
9.2. Sorting with Indices
9.3. Sorting Efficiently
9.4. The Schwartzian Transform
9.5. Multi-Level Sort with the Schwartzian Transform
9.6. Recursively Defined Data
9.7. Building Recursively Defined Data
9.8. Displaying Recursively Defined Data
9.9. Exercises
9.9.1. Exercise 1 [15 min]
9.9.2. Exercise 2 [15 min]
9.9.3. Exercise 3 [10 min]
9.9.4. Exercise 4 [20 min]
10. Building Larger Programs
10.1. The Cure for the Common Code
10.2. Inserting Code with eval
10.3. Using do
10.4. Using require
10.5. require and @INC
10.5.1. Extending @INC
10.5.2. Extending @INC with PERL5LIB
10.5.3. Extending @INC with -I
10.6. The Problem of Namespace Collisions
10.7. Packages as Namespace Separators
10.8. Scope of a Package Directive
10.9. Packages and Lexicals
10.10. Exercises
10.10.1. Exercise 1 [25 min]
10.10.2. Exercise 2 [15 min]
11. Introduction to Objects
11.1. If We Could Talk to the Animals...
11.2. Introducing the Method Invocation Arrow
11.3. The Extra Parameter of Method Invocation
11.4. Calling a Second Method to Simplify Things
11.5. A Few Notes About @ISA
11.6. Overriding the Methods
11.7. Starting the Search from a Different Place
11.8. The SUPER Way of Doing Things
11.9. What to Do with @_
11.10. Where We Are So Far...
11.11. Exercises
11.11.1. Exercise 1 [20 min]
11.11.2. Exercise 2 [40 min]
12. Objects with Data
12.1. A Horse Is a Horse, of Course of Course—or Is It?
12.2. Invoking an Instance Method
12.3. Accessing the Instance Data
12.4. How to Build a Horse
12.5. Inheriting the Constructor
12.6. Making a Method Work with Either Classes or Instances
12.7. Adding Parameters to a Method
12.8. More Interesting Instances
12.9. A Horse of a Different Color
12.10. Getting Our Deposit Back
12.11. Don't Look Inside the Box
12.12. Faster Getters and Setters
12.13. Getters That Double as Setters
12.14. Restricting a Method to Class-Only or Instance-Only
12.15. Exercise
12.15.1. Exercise [45 min]
13. Object Destruction
13.1. Cleaning Up After Yourself
13.2. Nested Object Destruction
13.3. Beating a Dead Horse
13.4. Indirect Object Notation
13.5. Additional Instance Variables in Subclasses
13.6. Using Class Variables
13.7. Weakening the Argument
13.8. Exercise
13.8.1. Exercise [45 min]
14. Some Advanced Object Topics
14.1. UNIVERSAL Methods
14.2. Testing Our Objects for Good Behavior
14.3. AUTOLOAD as a Last Resort
14.4. Using AUTOLOAD for Accessors
14.5. Creating Getters and Setters More Easily
14.6. Multiple Inheritance
14.7. Exercises
14.7.1. Exercise 1 [20 min]
14.7.2. Exercise 2 [40 min]
15. Exporter
15.1. What use Is Doing
15.2. Importing with Exporter
15.3. @EXPORT and @EXPORT_OK
15.4. %EXPORT_TAGS
15.5. Exporting in a Primarily OO Module
15.6. Custom Import Routines
15.7. Exercises
15.7.1. Exercise 1 [15 min]
15.7.2. Exercise 2 [15 min]
16. Writing a Distribution
16.1. There's More Than One Way To Do It
16.2. Using h2xs
16.2.1. MANIFEST
16.2.2. README
16.2.3. Changes
16.2.4. META.yml
16.2.5. The Prototype Module Itself
16.3. Embedded Documentation
16.4. Controlling the Distribution with Makefile.PL
16.5. Alternate Installation Locations (PREFIX=...)
16.6. Trivial make test
16.7. Trivial make install
16.8. Trivial make dist
16.9. Using the Alternate Library Location
16.10. Exercise
16.10.1. Exercise [30 min]
17. Essential Testing
17.1. More Tests Mean Better Code
17.2. A Simple Test Script
17.3. The Art of Testing
17.4. The Test Harness
17.5. Writing Tests with Test::More
17.6. Testing Object-Oriented Features
17.7. A Testing To-Do List
17.8. Skipping Tests
17.9. More Complex Tests (Multiple Test Scripts)
17.10. Exercise
17.10.1. Exercise [60 min]
18. Advanced Testing
18.1. Testing Large Strings
18.2. Testing Files
18.3. Testing STDOUT or STDERR
18.4. Using Mock Objects
18.5. Testing POD
18.6. Coverage Testing
18.7. Writing Your Own Test::* Modules
18.8. Exercises
18.8.1. Exercise 1 [20 min]
18.8.2. Exercise 2 [20 min]
19. Contributing to CPAN
19.1. The Comprehensive Perl Archive Network
19.2. Getting Prepared
19.3. Preparing Your Distribution
19.4. Uploading Your Distribution
19.5. Announcing the Module
19.6. Testing on Multiple Platforms
19.7. Consider Writing an Article or Giving a Talk
19.8. Exercise
19.8.1. Exercise [Infinite min]
A. Answers to Exercises
A.1. Answers for Chapter 2
A.1.1. Exercise 1
A.1.2. Exercise 2
A.2. Answers for Chapter 3
A.2.1. Exercise 1
A.2.2. Exercise 2
A.3. Answers for Chapter 4
A.3.1. Exercise 1
A.3.2. Exercise 2
A.4. Answers for Chapter 5
A.4.1. Exercise 1
A.4.2. Exercise 2
A.5. Answers for Chapter 6
A.5.1. Exercise 1
A.5.2. Exercise 2
A.6. Answer for Chapter 7
A.6.1. Exercise
A.7. Answers for Chapter 8
A.7.1. Exercise 1
A.7.2. Exercise 2
A.7.3. Exercise 3
A.8. Answers for Chapter 9
A.8.1. Exercise 1
A.8.2. Exercise 2
A.8.3. Exercise 3
A.8.4. Exercise 4
A.9. Answers for Chapter 10
A.9.1. Exercise 1
A.9.2. Exercise 2
A.10. Answers for Chapter 11
A.10.1. Exercise 1
A.10.2. Exercise 2
A.11. Answer for Chapter 12
A.11.1. Exercise
A.12. Answer for Chapter 13
A.12.1. Exercise
A.13. Answers for Chapter 14
A.13.1. Exercise 1
A.13.2. Exercise 2
A.14. Answers for Chapter 15
A.14.1. Exercise 1
A.14.2. Exercise 2
A.15. Answer for Chapter 16
A.15.1. Exercise
A.16. Answer for Chapter 17
A.16.1. Exercise
A.17. Answers for Chapter 18
A.17.1. Exercise 1
A.17.2. Exercise 2
A.18. Answer for Chapter 19
A.18.1. Exercise
Index
About the Authors
Colophon
SPECIAL OFFER: Upgrade this ebook with O’Reilly
← Prev
Back
Next →
← Prev
Back
Next →