Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Learning Perl
SPECIAL OFFER: Upgrade this ebook with O’Reilly
Preface
Typographical Conventions
Code Examples
Safari® Books Online
How to Contact Us
History of This Book
Changes from the Previous Edition
Acknowledgments
From Randal
From Tom
From brian
From All of Us
1. Introduction
Questions and Answers
Is This the Right Book for You?
Why Are There So Many Footnotes?
What About the Exercises and Their Answers?
What Do Those Numbers Mean at the Start of the Exercise?
What If I’m a Perl Course Instructor?
What Does “Perl” Stand For?
Why Did Larry Create Perl?
Why Didn’t Larry Just Use Some Other Language?
Is Perl Easy or Hard?
How Did Perl Get to Be So Popular?
What’s Happening with Perl Now?
What’s Perl Really Good For?
What Is Perl Not Good For?
How Can I Get Perl?
What Is CPAN?
How Can I Get Support for Perl?
Are There Any Other Kinds of Support?
What If I Find a Bug in Perl?
How Do I Make a Perl Program?
A Simple Program
What’s Inside That Program?
How Do I Compile My Perl Program?
A Whirlwind Tour of Perl
Exercises
2. Scalar Data
Numbers
All Numbers Have the Same Format Internally
Floating-Point Literals
Integer Literals
Nondecimal Integer Literals
Numeric Operators
Strings
Single-Quoted String Literals
Double-Quoted String Literals
String Operators
Automatic Conversion Between Numbers and Strings
Perl’s Built-in Warnings
Scalar Variables
Choosing Good Variable Names
Scalar Assignment
Binary Assignment Operators
Output with print
Interpolation of Scalar Variables into Strings
Creating Characters by Code Point
Operator Precedence and Associativity
Comparison Operators
The if Control Structure
Boolean Values
Getting User Input
The chomp Operator
The while Control Structure
The undef Value
The defined Function
Exercises
3. Lists and Arrays
Accessing Elements of an Array
Special Array Indices
List Literals
The qw Shortcut
List Assignment
The pop and push Operators
The shift and unshift Operators
The splice Operator
Interpolating Arrays into Strings
The foreach Control Structure
Perl’s Favorite Default: $_
The reverse Operator
The sort Operator
The each Operator
Scalar and List Context
Using List-Producing Expressions in Scalar Context
Using Scalar-Producing Expressions in List Context
Forcing Scalar Context
<STDIN> in List Context
Exercises
4. Subroutines
Defining a Subroutine
Invoking a Subroutine
Return Values
Arguments
Private Variables in Subroutines
Variable-Length Parameter Lists
A Better &max Routine
Empty Parameter Lists
Notes on Lexical (my) Variables
The use strict Pragma
The return Operator
Omitting the Ampersand
Non-Scalar Return Values
Persistent, Private Variables
Exercises
5. Input and Output
Input from Standard Input
Input from the Diamond Operator
The Invocation Arguments
Output to Standard Output
Formatted Output with printf
Arrays and printf
Filehandles
Opening a Filehandle
Binmoding Filehandles
Bad Filehandles
Closing a Filehandle
Fatal Errors with die
Warning Messages with warn
Automatically die-ing
Using Filehandles
Changing the Default Output Filehandle
Reopening a Standard Filehandle
Output with say
Filehandles in a Scalar
Exercises
6. Hashes
What Is a Hash?
Why Use a Hash?
Hash Element Access
The Hash As a Whole
Hash Assignment
The Big Arrow
Hash Functions
The keys and values Functions
The each Function
Typical Use of a Hash
The exists Function
The delete Function
Hash Element Interpolation
The %ENV hash
Exercises
7. In the World of Regular Expressions
What Are Regular Expressions?
Using Simple Patterns
Unicode Properties
About Metacharacters
Simple Quantifiers
Grouping in Patterns
Alternatives
Character Classes
Character Class Shortcuts
Negating the Shortcuts
Exercises
8. Matching with Regular Expressions
Matches with m//
Match Modifiers
Case-Insensitive Matching with /i
Matching Any Character with /s
Adding Whitespace with /x
Combining Option Modifiers
Choosing a Character Interpretation
Other Options
Anchors
Word Anchors
The Binding Operator =~
Interpolating into Patterns
The Match Variables
The Persistence of Captures
Noncapturing Parentheses
Named Captures
The Automatic Match Variables
General Quantifiers
Precedence
Examples of Precedence
And There’s More
A Pattern Test Program
Exercises
9. Processing Text with Regular Expressions
Substitutions with s///
Global Replacements with /g
Different Delimiters
Substitution Modifiers
The Binding Operator
Nondestructive Substitutions
Case Shifting
The split Operator
The join Function
m// in List Context
More Powerful Regular Expressions
Nongreedy Quantifiers
Matching Multiple-Line Text
Updating Many Files
In-Place Editing from the Command Line
Exercises
10. More Control Structures
The unless Control Structure
The else Clause with unless
The until Control Structure
Expression Modifiers
The Naked Block Control Structure
The elsif Clause
Autoincrement and Autodecrement
The Value of Autoincrement
The for Control Structure
The Secret Connection Between foreach and for
Loop Controls
The last Operator
The next Operator
The redo Operator
Labeled Blocks
The Conditional Operator ?:
Logical Operators
The Value of a Short Circuit Operator
The defined-or Operator
Control Structures Using Partial-Evaluation Operators
Exercises
11. Perl Modules
Finding Modules
Installing Modules
Using Your Own Directories
Using Simple Modules
The File::Basename Module
Using Only Some Functions from a Module
The File::Spec Module
Path::Class
CGI.pm
Databases and DBI
Dates and Times
Exercises
12. File Tests
File Test Operators
Testing Several Attributes of the Same File
Stacked File Test Operators
The stat and lstat Functions
The localtime Function
Bitwise Operators
Using Bitstrings
Exercises
13. Directory Operations
Moving Around the Directory Tree
Globbing
An Alternate Syntax for Globbing
Directory Handles
Recursive Directory Listing
Manipulating Files and Directories
Removing Files
Renaming Files
Links and Files
Making and Removing Directories
Modifying Permissions
Changing Ownership
Changing Timestamps
Exercises
14. Strings and Sorting
Finding a Substring with index
Manipulating a Substring with substr
Formatting Data with sprintf
Using sprintf with “Money Numbers”
Interpreting Non-Decimal Numerals
Advanced Sorting
Sorting a Hash by Value
Sorting by Multiple Keys
Exercises
15. Smart Matching and given-when
The Smart Match Operator
Smart Match Precedence
The given Statement
Dumb Matching
Using when with Many Items
Exercises
16. Process Management
The system Function
Avoiding the Shell
The Environment Variables
The exec Function
Using Backquotes to Capture Output
Using Backquotes in a List Context
External Processes with IPC::System::Simple
Processes as Filehandles
Getting Down and Dirty with Fork
Sending and Receiving Signals
Exercises
17. Some Advanced Perl Techniques
Slices
Array Slice
Hash Slice
Trapping Errors
Using eval
More Advanced Error Handling
autodie
Picking Items from a List with grep
Transforming Items from a List with map
Fancier List Utilities
Exercises
A. Exercise Answers
Answers to Chapter 1 Exercises
Answers to Chapter 2 Exercises
Answers to Chapter 3 Exercises
Answers to Chapter 4 Exercises
Answers to Chapter 5 Exercises
Answers to Chapter 6 Exercises
Answers to Chapter 7 Exercises
Answers to Chapter 8 Exercises
Answers to Chapter 9 Exercises
Answers to Chapter 10 Exercises
Answer to Chapter 11 Exercises
Answers to Chapter 12 Exercises
Answers to Chapter 13 Exercises
Answers to Chapter 14 Exercises
Answers to Chapter 15 Exercises
Answers to Chapter 16 Exercises
Answer to Chapter 17 Exercises
B. Beyond the Llama
Further Documentation
Regular Expressions
Packages
Extending Perl’s Functionality
Libraries
Writing Your Own Modules
Databases
Direct System Database Access
Flat-File Database Access
Other Operators and Functions
Transliteration with tr///
Here Documents
Mathematics
Advanced Math Functions
Imaginary and Complex Numbers
Large and High-Precision Numbers
Lists and Arrays
map and grep
Bits and Pieces
Formats
Networking and IPC
System V IPC
Sockets
Security
Debugging
Command-Line Options
Built-in Variables
Syntax Extensions
References
Complex Data Structures
Object-Oriented Programming
Anonymous Subroutines and Closures
Tied Variables
Operator Overloading
Dynamic Loading
Embedding
Converting Other Languages to Perl
Converting find Command Lines to Perl
Command-Line Options in Your Programs
Embedded Documentation
More Ways to Open Filehandles
Threads and Forking
Graphical User Interfaces (GUIs)
And More…
C. A Unicode Primer
Unicode
UTF-8 and Friends
Getting Everyone to Agree
Fancy Characters
Fancier Characters
Dealing with Unicode in Perl
Using Unicode in Your Source
Fancier Characters by Name
Reading from STDIN or Writing to STDOUT or STDERR
Reading from and Writing to Files
Dealing with Command-Line Arguments
Dealing with Databases
Further Reading
Index
About the Authors
Colophon
SPECIAL OFFER: Upgrade this ebook with O’Reilly
← Prev
Back
Next →
← Prev
Back
Next →