Perl Home

Perl Books

Perl Keywords

Perl

Perl Cookbook, 2nd Edition

See more Amazon Details

Contents Listing

Preface



1. Strings

1.1 Accessing Substrings

1.2 Establishing a Default Value

1.3 Exchanging Values Without Using Temporary Variables

1.4 Converting Between Characters and Values

1.5 Using Named Unicode Characters

1.6 Processing a String One Character at a Time

1.7 Reversing a String by Word or Character

1.8 Treating Unicode Combined Characters as Single Characters

1.9 Canonicalizing Strings with Unicode Combined Characters

1.10 Treating a Unicode String as Octets

1.11 Expanding and Compressing Tabs

1.12 Expanding Variables in User Input

1.13 Controlling Case

1.14 Properly Capitalizing a Title or Headline

1.15 Interpolating Functions and Expressions Within Strings

1.16 Indenting Here Documents

1.17 Reformatting Paragraphs

1.18 Escaping Characters

1.19 Trimming Blanks from the Ends of a String

1.20 Parsing Comma-Separated Data

1.21 Constant Variables

1.22 Soundex Matching

1.23 Program: fixstyle

1.24 Program: psgrep



2. Numbers

2.1 Checking Whether a String Is a Valid Number

2.2 Rounding Floating-Point Numbers

2.3 Comparing Floating-Point Numbers

2.4 Operating on a Series of Integers

2.5 Working with Roman Numerals

2.6 Generating Random Numbers

2.7 Generating Repeatable Random Number Sequences

2.8 Making Numbers Even More Random

2.9 Generating Biased Random Numbers

2.10 Doing Trigonometry in Degrees, Not Radians

2.11 Calculating More Trigonometric Functions

2.12 Taking Logarithms

2.13 Multiplying Matrices

2.14 Using Complex Numbers

2.15 Converting Binary, Octal, and Hexadecimal Numbers

2.16 Putting Commas in Numbers

2.17 Printing Correct Plurals

2.18 Program: Calculating Prime Factors



3. Dates and Times

3.1 Finding Today's Date

3.2 Converting DMYHMS to Epoch Seconds

3.3 Converting Epoch Seconds to DMYHMS

3.4 Adding to or Subtracting from a Date

3.5 Difference of Two Dates

3.6 Day in a Week/Month/Year or Week Number

3.7 Parsing Dates and Times from Strings

3.8 Printing a Date

3.9 High-Resolution Timers

3.10 Short Sleeps

3.11 Program: hopdelta



4. Arrays

4.1 Specifying a List in Your Program

4.2 Printing a List with Commas

4.3 Changing Array Size

4.4 Implementing a Sparse Array

4.5 Iterating Over an Array

4.6 Iterating Over an Array by Reference

4.7 Extracting Unique Elements from a List

4.8 Finding Elements in One Array but Not Another

4.9 Computing Union, Intersection, or Difference of Unique Lists

4.10 Appending One Array to Another

4.11 Reversing an Array

4.12 Processing Multiple Elements of an Array

4.13 Finding the First List Element That Passes a Test

4.14 Finding All Elements in an Array Matching Certain Criteria

4.15 Sorting an Array Numerically

4.16 Sorting a List by Computable Field

4.17 Implementing a Circular List

4.18 Randomizing an Array

4.19 Program: words

4.20 Program: permute



5. Hashes

5.1 Adding an Element to a Hash

5.2 Testing for the Presence of a Key in a Hash

5.3 Creating a Hash with Immutable Keys or Values

5.4 Deleting from a Hash

5.5 Traversing a Hash

5.6 Printing a Hash

5.7 Retrieving from a Hash in Insertion Order

5.8 Hashes with Multiple Values per Key

5.9 Inverting a Hash

5.10 Sorting a Hash

5.11 Merging Hashes

5.12 Finding Common or Different Keys in Two Hashes

5.13 Hashing References

5.14 Presizing a Hash

5.15 Finding the Most Common Anything

5.16 Representing Relationships Between Data

5.17 Program: dutree



6. Pattern Matching

6.1 Copying and Substituting Simultaneously

6.2 Matching Letters

6.3 Matching Words

6.4 Commenting Regular Expressions

6.5 Finding the Nth Occurrence of a Match

6.6 Matching Within Multiple Lines

6.7 Reading Records with a Separator

6.8 Extracting a Range of Lines

6.9 Matching Shell Globs as Regular Expressions

6.10 Speeding Up Interpolated Matches

6.11 Testing for a Valid Pattern

6.12 Honoring Locale Settings in Regular Expressions

6.13 Approximate Matching

6.14 Matching from Where the Last Pattern Left Off

6.15 Greedy and Non-Greedy Matches

6.16 Detecting Doubled Words

6.17 Matching Nested Patterns

6.18 Expressing AND, OR, and NOT in a Single Pattern

6.19 Matching a Valid Mail Address

6.20 Matching Abbreviations

6.21 Program: urlify

6.22 Program: tcgrep

6.23 Regular Expression Grab Bag



7. File Access

7.1 Opening a File

7.2 Opening Files with Unusual Filenames

7.3 Expanding Tildes in Filenames

7.4 Making Perl Report Filenames in Error Messages

7.5 Storing Filehandles into Variables

7.6 Writing a Subroutine That Takes Filehandles as Built-ins Do

7.7 Caching Open Output Filehandles

7.8 Printing to Many Filehandles Simultaneously

7.9 Opening and Closing File Descriptors by Number

7.10 Copying Filehandles

7.11 Creating Temporary Files

7.12 Storing a File Inside Your Program Text

7.13 Storing Multiple Files in the DATA Area

7.14 Writing a Unix-Style Filter Program

7.15 Modifying a File in Place with a Temporary File

7.16 Modifying a File in Place with the -i Switch

7.17 Modifying a File in Place Without a Temporary File

7.18 Locking a File

7.19 Flushing Output

7.20 Doing Non-Blocking I/O

7.21 Determining the Number of Unread Bytes

7.22 Reading from Many Filehandles Without Blocking

7.23 Reading an Entire Line Without Blocking

7.24 Program: netlock

7.25 Program: lockarea



8. File Contents

8.1 Reading Lines with Continuation Characters

8.2 Counting Lines (or Paragraphs or Records) in a File

8.3 Processing Every Word in a File

8.4 Reading a File Backward by Line or Paragraph

8.5 Trailing a Growing File

8.6 Picking a Random Line from a File

8.7 Randomizing All Lines

8.8 Reading a Particular Line in a File

8.9 Processing Variable-Length Text Fields

8.10 Removing the Last Line of a File

8.11 Processing Binary Files

8.12 Using Random-Access I/O

8.13 Updating a Random-Access File

8.14 Reading a String from a Binary File

8.15 Reading Fixed-Length Records

8.16 Reading Configuration Files

8.17 Testing a File for Trustworthiness

8.18 Treating a File as an Array

8.19 Setting the Default I/O Layers

8.20 Reading or Writing Unicode from a Filehandle

8.21 Converting Microsoft Text Files into Unicode

8.22 Comparing the Contents of Two Files

8.23 Pretending a String Is a File

8.24 Program: tailwtmp

8.25 Program: tctee

8.26 Program: laston

8.27 Program: Flat File Indexes



9. Directories

9.1 Getting and Setting Timestamps

9.2 Deleting a File

9.3 Copying or Moving a File

9.4 Recognizing Two Names for the Same File

9.5 Processing All Files in a Directory

9.6 Globbing, or Getting a List of Filenames Matching a Pattern

9.7 Processing All Files in a Directory Recursively

9.8 Removing a Directory and Its Contents

9.9 Renaming Files

9.10 Splitting a Filename into Its Component Parts

9.11 Working with Symbolic File Permissions Instead of Octal Values

9.12 Program: symirror

9.13 Program: lst



10. Subroutines

10.1 Accessing Subroutine Arguments

10.2 Making Variables Private to a Function

10.3 Creating Persistent Private Variables

10.4 Determining Current Function Name

10.5 Passing Arrays and Hashes by Reference

10.6 Detecting Return Context

10.7 Passing by Named Parameter

10.8 Skipping Selected Return Values

10.9 Returning More Than One Array or Hash

10.10 Returning Failure

10.11 Prototyping Functions

10.12 Handling Exceptions

10.13 Saving Global Values

10.14 Redefining a Function

10.15 Trapping Undefined Function Calls with AUTOLOAD

10.16 Nesting Subroutines

10.17 Writing a Switch Statement

10.18 Program: Sorting Your Mail



11. References and Records

11.1 Taking References to Arrays

11.2 Making Hashes of Arrays

11.3 Taking References to Hashes

11.4 Taking References to Functions

11.5 Taking References to Scalars

11.6 Creating Arrays of Scalar References

11.7 Using Closures Instead of Objects

11.8 Creating References to Methods

11.9 Constructing Records

11.10 Reading and Writing Hash Records to Text Files

11.11 Printing Data Structures

11.12 Copying Data Structures

11.13 Storing Data Structures to Disk

11.14 Transparently Persistent Data Structures

11.15 Coping with Circular Data Structures Using Weak References

11.16 Program: Outlines

11.17 Program: Binary Trees



12. Packages, Libraries, and Modules

12.1 Defining a Module's Interface

12.2 Trapping Errors in require or use

12.3 Delaying use Until Runtime

12.4 Making Variables Private to a Module

12.5 Making Functions Private to a Module

12.6 Determining the Caller's Package

12.7 Automating Module Cleanup

12.8 Keeping Your Own Module Directory

12.9 Preparing a Module for Distribution

12.10 Speeding Module Loading with SelfLoader

12.11 Speeding Up Module Loading with Autoloader

12.12 Overriding Built-in Functions

12.13 Overriding a Built-in Function in All Packages

12.14 Reporting Errors and Warnings Like Built-ins

12.15 Customizing Warnings

12.16 Referring to Packages Indirectly

12.17 Using h2ph to Translate C #include Files

12.18 Using h2xs to Make a Module with C Code

12.19 Writing Extensions in C with Inline::C

12.20 Documenting Your Module with Pod

12.21 Building and Installing a CPAN Module

12.22 Example: Module Template

12.23 Program: Finding Versions and Descriptions of Installed Modules



13. Classes, Objects, and Ties

13.1 Constructing an Object

13.2 Destroying an Object

13.3 Managing Instance Data

13.4 Managing Class Data

13.5 Using Classes as Structs

13.6 Cloning Constructors

13.7 Copy Constructors

13.8 Invoking Methods Indirectly

13.9 Determining Subclass Membership

13.10 Writing an Inheritable Class

13.11 Accessing Overridden Methods

13.12 Generating Attribute Methods Using AUTOLOAD

13.13 Coping with Circular Data Structures Using Objects

13.14 Overloading Operators

13.15 Creating Magic Variables with tie



14. Database Access

14.1 Making and Using a DBM File

14.2 Emptying a DBM File

14.3 Converting Between DBM Files

14.4 Merging DBM Files

14.5 Sorting Large DBM Files

14.6 Storing Complex Data in a DBM File

14.7 Persistent Data

14.8 Saving Query Results to Excel or CSV

14.9 Executing an SQL Command Using DBI

14.10 Escaping Quotes

14.11 Dealing with Database Errors

14.12 Repeating Queries Efficiently

14.13 Building Queries Programmatically

14.14 Finding the Number of Rows Returned by a Query

14.15 Using Transactions

14.16 Viewing Data One Page at a Time

14.17 Querying a CSV File with SQL

14.18 Using SQL Without a Database Server

14.19 Program: ggh-Grep Netscape Global History



15. Interactivity

15.1 Parsing Program Arguments

15.2 Testing Whether a Program Is Running Interactively

15.3 Clearing the Screen

15.4 Determining Terminal or Window Size

15.5 Changing Text Color

15.6 Reading Single Characters from the Keyboard

15.7 Ringing the Terminal Bell

15.8 Using POSIX termios

15.9 Checking for Waiting Input

15.10 Reading Passwords

15.11 Editing Input

15.12 Managing the Screen

15.13 Controlling Another Program with Expect

15.14 Creating Menus with Tk

15.15 Creating Dialog Boxes with Tk

15.16 Responding to Tk Resize Events

15.17 Removing the DOS Shell Window with Windows Perl/Tk

15.18 Graphing Data

15.19 Thumbnailing Images

15.20 Adding Text to an Image

15.21 Program: Small termcap Program

15.22 Program: tkshufflepod

15.23 Program: graphbox



16. Process Management and Communication

16.1 Gathering Output from a Program

16.2 Running Another Program

16.3 Replacing the Current Program with a Different One

16.4 Reading or Writing to Another Program

16.5 Filtering Your Own Output

16.6 Preprocessing Input

16.7 Reading STDERR from a Program

16.8 Controlling Input and Output of Another Program

16.9 Controlling the Input, Output, and Error of Another Program

16.10 Communicating Between Related Processes

16.11 Making a Process Look Like a File with Named Pipes

16.12 Sharing Variables in Different Processes

16.13 Listing Available Signals

16.14 Sending a Signal

16.15 Installing a Signal Handler

16.16 Temporarily Overriding a Signal Handler

16.17 Writing a Signal Handler

16.18 Catching Ctrl-C

16.19 Avoiding Zombie Processes

16.20 Blocking Signals

16.21 Timing Out an Operation

16.22 Turning Signals into Fatal Errors

16.23 Program: sigrand



17. Sockets

17.1 Writing a TCP Client

17.2 Writing a TCP Server

17.3 Communicating over TCP

17.4 Setting Up a UDP Client

17.5 Setting Up a UDP Server

17.6 Using Unix Domain Sockets

17.7 Identifying the Other End of a Socket

17.8 Finding Your Own Name and Address

17.9 Closing a Socket After Forking

17.10 Writing Bidirectional Clients

17.11 Forking Servers

17.12 Pre-Forking Servers

17.13 Non-Forking Servers

17.14 Multitasking Server with Threads

17.15 Writing a Multitasking Server with POE

17.16 Writing a Multihomed Server

17.17 Making a Daemon Server

17.18 Restarting a Server on Demand

17.19 Managing Multiple Streams of Input

17.20 Program: backsniff

17.21 Program: fwdport



18. Internet Services

18.1 Simple DNS Lookups

18.2 Being an FTP Client

18.3 Sending Mail

18.4 Reading and Posting Usenet News Messages

18.5 Reading Mail with POP3

18.6 Simulating Telnet from a Program

18.7 Pinging a Machine

18.8 Accessing an LDAP Server

18.9 Sending Attachments in Mail

18.10 Extracting Attachments from Mail

18.11 Writing an XML-RPC Server

18.12 Writing an XML-RPC Client

18.13 Writing a SOAP Server

18.14 Writing a SOAP Client

18.15 Program: rfrm

18.16 Program: expn and vrfy



19. CGI Programming

19.1 Writing a CGI Script

19.2 Redirecting Error Messages

19.3 Fixing a 500 Server Error

19.4 Writing a Safe CGI Program

19.5 Executing Commands Without Shell Escapes

19.6 Formatting Lists and Tables with HTML Shortcuts

19.7 Redirecting to a Different Location

19.8 Debugging the Raw HTTP Exchange

19.9 Managing Cookies

19.10 Creating Sticky Widgets

19.11 Writing a Multiscreen CGI Script

19.12 Saving a Form to a File or Mail Pipe

19.13 Program: chemiserie



20. Web Automation

20.1 Fetching a URL from a Perl Script

20.2 Automating Form Submission

20.3 Extracting URLs

20.4 Converting ASCII to HTML

20.5 Converting HTML to ASCII

20.6 Extracting or Removing HTML Tags

20.7 Finding Stale Links

20.8 Finding Fresh Links

20.9 Using Templates to Generate HTML

20.10 Mirroring Web Pages

20.11 Creating a Robot

20.12 Parsing a Web Server Log File

20.13 Processing Server Logs

20.14 Using Cookies

20.15 Fetching Password-Protected Pages

20.16 Fetching https:// Web Pages

20.17 Resuming an HTTP GET

20.18 Parsing HTML

20.19 Extracting Table Data

20.20 Program: htmlsub

20.21 Program: hrefsub



21. mod_perl

21.1 Authenticating

21.2 Setting Cookies

21.3 Accessing Cookie Values

21.4 Redirecting the Browser

21.5 Interrogating Headers

21.6 Accessing Form Parameters

21.7 Receiving Uploaded Files

21.8 Speeding Up Database Access

21.9 Customizing Apache's Logging

21.10 Transparently Storing Information in URLs

21.11 Communicating Between mod_perl and PHP

21.12 Migrating from CGI to mod_perl

21.13 Sharing Information Between Handlers

21.14 Reloading Changed Modules

21.15 Benchmarking a mod_perl Application

21.16 Templating with HTML::Mason

21.17 Templating with Template Toolkit



22. XML

22.1 Parsing XML into Data Structures

22.2 Parsing XML into a DOM Tree

22.3 Parsing XML into SAX Events

22.4 Making Simple Changes to Elements or Text

22.5 Validating XML

22.6 Finding Elements and Text Within an XML Document

22.7 Processing XML Stylesheet Transformations

22.8 Processing Files Larger Than Available Memory

22.9 Reading and Writing RSS Files

22.10 Writing XML



Index

Google
Web www.opensource.force9.co.uk

Contents
View a contents listing.

Short
Short Description.


Keyword Pages
CGI
modPerl
Perl
Perl modules
Perl programming
programming
programming language

Keyword Bestsellers

CGI

modPerl

Perl modules

Perl programming

programming

programming language

Perl

Perl Bestsellers
The bestselling books on Amazon.

Articles

Visit our site of the month Load Testing at loadtesting.force9.co.uk
Visit our site of the month Load Testing at loadtesting.force9.co.uk