• Aucun résultat trouvé

Teach Yourself Perl 5 in 21 days

N/A
N/A
Protected

Academic year: 2022

Partager "Teach Yourself Perl 5 in 21 days"

Copied!
1124
0
0

Texte intégral

(1)

Teach Yourself Perl 5 in 21 days

David Till

Table of Contents:

Introduction

Who Should Read This Book?

Special Features of This Book

Programming Examples

End-of-Day Q& A and Workshop

Conventions Used in This Book

What You'll Learn in 21 Days

Week 1 Week at a Glance

Where You're Going

Day 1 Getting Started

What Is Perl?

How Do I Find Perl?

Where Do I Get Perl?

Other Places to Get Perl

A Sample Perl Program

Running a Perl Program

If Something Goes Wrong

The First Line of Your Perl Program: How Comments Work

Comments

Line 2: Statements, Tokens, and <STDIN>

Statements and Tokens

Tokens and White Space

What the Tokens Do: Reading from Standard Input

Line 3: Writing to Standard Output

Function Invocations and Arguments

Error Messages

(2)

Interpretive Languages Versus Compiled Languages

Summary

Q&A

Workshop

Quiz

Exercises

Day 2 Basic Operators and Control Flow

Storing in Scalar Variables Assignment

The Definition of a Scalar Variable

Scalar Variable Syntax

Assigning a Value to a Scalar Variable

Performing Arithmetic

Example of Miles-to-Kilometers Conversion

The chop Library Function

Expressions

Assignments and Expressions

Other Perl Operators

Introduction to Conditional Statements

The if Statement

The Conditional Expression

The Statement Block

Testing for Equality Using ==

Other Comparison Operators

Two-Way Branching Using if and else

Multi-Way Branching Using elsif

Writing Loops Using the while Statement

Nesting Conditional Statements

Looping Using the until Statement

Summary

Q&A

Workshop

Quiz

Exercises

Day 3 Understanding Scalar Values

What Is a Scalar Value?

Integer Scalar Values

Integer Scalar Value Limitations

(3)

Floating-Point Scalar Values

Floating-Point Arithmetic and Round-Off Error

Using Octal and Hexadecimal Notation

Decimal Notation

Octal Notation

Hexadecimal Notation

Why Bother?

Character Strings

Using Double-Quoted Strings

Escape Sequences

Single-Quoted Strings

Interchangeability of Strings and Numeric Values

Initial Values of Scalar Variables

Summary

Q&A

Workshop

Quiz

Exercises

Day 4 More Operators

Using the Arithmetic Operators

Exponentiation

The Remainder Operator

Unary Negation

Using Comparison Operators

Integer-Comparison Operators

String-Comparison Operators

String Comparison Versus Integer Comparison

Comparison and Floating-Point Numbers

Using Logical Operators

Evaluation Within Logical Operators

Logical Operators as Subexpressions

Using Bit-Manipulation Operators

What Bits Are and How They Are Used

The Bit-Manipulation Operators

Using the Assignment Operators

Assignment Operators as Subexpressions

Using Autoincrement and Autodecrement

The Autoincrement Operator Pre-Increment

The Autoincrement Operator Post-Increment

(4)

The Autodecrement Operator

Using Autoincrement With Strings

The String Concatenation and Repetition Operators

The String-Concatenation Operator

The String-Repetition Operator

Concatenation and Assignment

Other Perl Operators

The Comma Operator

The Conditional Operator

The Order of Operations

Precedence

Associativity

Forcing Precedence Using Parentheses

Summary

Q&A

Workshop

Quiz

Exercises

Day 5 Lists and Array Variables

Introducing Lists

Scalar Variables and Lists

Lists and String Substitution

Storing Lists in Array Variables

Accessing an Element of an Array Variable

More Details on Array Element Names

Using Lists and Arrays in Perl Programs

Using Brackets and Substituting for Variables

Using List Ranges

Expressions and List Ranges

More on Assignment and Array Variables

Copying from One Array Variable to Another

Using Array Variables in Lists

Substituting for Array Variables in Strings

Assigning to Scalar Variables from Array Variables

Retrieving the Length of a List

Using Array Slices

Using List Ranges in Array-Slice Subscripts

Using Variables in Array-Slice Subscripts

Assigning to Array Slices

(5)

Overlapping Array Slices

Using the Array-Slice Notation as a Shorthand

Reading an Array from the Standard Input File

Array Library Functions

Sorting a List or Array Variable

Reversing a List or Array Variable

Using chop on Array Variables

Creating a Single String from a List

Splitting a String into a List

Other List-Manipulation Functions

Summary

Q&A

Workshop

Quiz

Exercises

Day 6 Reading from and Writing to Files

Opening a File

The File Variable

The Filename

The File Mode

Checking Whether the Open Succeeded

Reading from a File

File Variables and the Standard Input File

Terminating a Program Using die

Reading into Array Variables

Writing to a File

The Standard Output File Variable

Merging Two Files into One

Redirecting Standard Input and Standard Output

The Standard Error File

Closing a File

Determining the Status of a File

File-Test Operator Syntax

Available File-Test Operators

More on the -e Operator

Testing for Read Permission-the -r Operator

Checking for Other Permissions

Checking for Empty Files

Using File-Test Operators with File Variables

(6)

Reading from a Sequence of Files

Reading into an Array Variable

Using Command-Line Arguments as Values

ARGV and the <> Operator

Opening Pipes

Summary

Q&A

Workshop

Quiz

Exercises

Day 7 Pattern Matching

Introduction

The Match Operators

Match-Operator Precedence

Special Characters in Patterns

The + Character

The [] Special Characters

The * and ? Special Characters

Escape Sequences for Special Characters

Matching Any Letter or Number

Anchoring Patterns

Variable Substitution in Patterns

Excluding Alternatives

Character-Range Escape Sequences

Matching Any Character

Matching a Specified Number of Occurrences

Specifying Choices

Reusing Portions of Patterns

Pattern-Sequence Scalar Variables

Special-Character Precedence

Specifying a Different Pattern Delimiter

Pattern-Matching Options

Matching All Possible Patterns

Ignoring Case

Treating the String as Multiple Lines

Evaluating a Pattern Only Once

Treating the String as a Single Line

Using White Space in Patterns

The Substitution Operator

(7)

Using Pattern-Sequence Variables in Substitutions

Options for the Substitution Operator

Evaluating a Pattern Only Once

Treating the String as Single or Multiple Lines

Using White Space in Patterns

Specifying a Different Delimiter

The Translation Operator

Options for the Translation Operator

Extended Pattern-Matching

Parenthesizing Without Saving in Memory

Embedding Pattern Options

Positive and Negative Look-Ahead

Pattern Comments

Summary

Q&A

Workshop

Quiz

Exercises

Week 1 Week 1 in Review Week 2 Week 2 at a Glance

Where You're Going

Day 8 More Control Structures

Using Single-Line Conditional Statements

Problems with Single-Line Conditional Statements

Looping Using the for Statement

Using the Comma Operator in a for Statement

Looping Through a List: The foreach Statement

The foreach Local Variable

Changing the Value of the Local Variable

Using Returned Lists in the foreach Statement

The do Statement

Exiting a Loop Using the last Statement

Using next to Start the Next Iteration of a Loop

The redo Statement

Using Labeled Blocks for Multilevel Jumps

(8)

Using next and redo with Labels

The continue Block

The goto Statement

Summary

Q&A

Workshop

Quiz

Exercises

Day 9 Using Subroutines

What Is a Subroutine?

Defining and Invoking a Subroutine

Forward References to Subroutines

Returning a Value from a Subroutine

Return Values and Conditional Expressions

The return Statement

Using Local Variables in Subroutines

Initializing Local Variables

Passing Values to a Subroutine

Passing a List to a Subroutine

Calling Subroutines from Other Subroutines

Recursive Subroutines

Passing Arrays by Name Using Aliases

Using the do Statement with Subroutines

Specifying the Sort Order

Predefined Subroutines

Creating Startup Code Using BEGIN

Creating Termination Code Using END

Handling Non-Existent Subroutines Using AUTOLOAD

Summary

Q&A

Workshop

Quiz

Exercises

Day 10 Associative Arrays

Limitations of Array Variables

Definition

Referring to Associative Array Elements

(9)

Adding Elements to an Associative Array

Creating Associative Arrays

Copying Associative Arrays from Array Variables

Adding and Deleting Array Elements

Listing Array Indexes and Values

Looping Using an Associative Array

Creating Data Structures Using Associative Arrays

Linked Lists

Structures

Trees

Databases

Example: A Calculator Program

Summary

Q&A

Workshop

Quiz

Exercises

Day 11 Formatting Your Output

Defining a Print Format

Displaying a Print Format

Displaying Values in a Print Format

Creating a General-Purpose Print Format

Choosing a Value-Field Format

Printing Value-Field Characters

Using the Multiline Field Format

Writing to Other Output Files

Saving the Default File Variable

Specifying a Page Header

Changing the Header Print Format

Setting the Page Length

Using print with Pagination

Formatting Long Character Strings

Eliminating Blank Lines When Formatting

Supplying an Indefinite Number of Lines

Formatting Output Using printf

Summary

Q&A

Workshop

Quiz

(10)

Exercises

Day 12 Working with the File System

File Input and Output Functions

Basic Input and Output Functions

Skipping and Rereading Data

System Read and Write Functions

Reading Characters Using getc

Reading a Binary File Using binmode

Directory-Manipulation Functions

The mkdir Function

The chdir Function

The opendir Function

The closedir Function

The readdir Function

The telldir and seekdir Functions

The rewinddir Function

The rmdir Function

File-Attribute Functions

File-Relocation Functions

Link and Symbolic Link Functions

File-Permission Functions

Miscellaneous Attribute Functions

Using DBM Files

The dbmopen Function

The dbmclose Function

Summary

Q&A

Workshop

Quiz

Exercises

Day 13 Process, String, and Mathematical Functions

Process- and Program-Manipulation Functions

Starting a Process

Terminating a Program or Process

Execution Control Functions

Miscellaneous Control Functions

Mathematical Functions

(11)

The sin and cos Functions

The atan2 Function

The sqrt Function

The exp Function

The log Function

The abs Function

The rand and srand Functions

String-Manipulation Functions

The index Function

The rindex Function

The length Function

Retrieving String Length Using tr

The pos Function

The substr Function

The study Function

Case Conversion Functions

The quotemeta Function

The join Function

The sprintf Function

Summary

Q&A

Workshop

Quiz

Exercises

Day 14 Scalar-Conversion and List-Manipulation Functions

The chop Function

The chomp Function

The crypt Function

The hex Function

The int Function

The oct Function

The oct Function and Hexadecimal Integers

The ord and chr Functions

The scalar Function

The pack Function

The pack Function and C Data Types

The unpack Function

Unpacking Strings

Skipping Characters When Unpacking

(12)

The unpack Function and uuencode

The vec Function

The defined Function

The undef Function

Array and List Functions

The grep Function

The splice Function

The shift Function

The unshift Function

The push Function

The pop Function

Creating Stacks and Queues

The split Function

The sort and reverse Functions

The map Function

The wantarray Function

Associative Array Functions

The keys Function

The values Function

The each Function

The delete Function

The exists Function

Summary

Q&A

Workshop

Quiz

Exercises

Week 2 Week 2 in Review Week 3 Week 3 at a Glance

Where You're Going

Day 15 System Functions

System Library Emulation Functions

The getgrent Function

The setgrent and endgrent Functions

The getgrnam Function

(13)

The getgrid Function

The getnetent Function

The getnetbyaddr Function

The getnetbyname Function

The setnetent and endnetent Functions

The gethostbyaddr Function

The gethostbyname Function

The gethostent, sethostent, and endhostent Functions

The getlogin Function

The getpgrp and setpgrp Functions

The getppid Function

The getpwnam Function

The getpwuid Function

The getpwent Function

The setpwent and endpwent Functions

The getpriority and setpriority Functions

The getprotoent Function

The getprotobyname and getprotobynumber Functions

The setprotoent and endprotoent Functions

The getservent Function

The getservbyname and getservbyport Functions

The setservent and endservent Functions

The chroot Function

The ioctl Function

The alarm Function

Calling the System select Function

The dump Function

Socket-Manipulation Functions

The socket Function

The bind Function

The listen Function

The accept Function

The connect Function

The shutdown Function

The socketpair Function

The getsockopt and setsockopt Functions

The getsockname and getpeername Functions

The UNIX System V IPC Functions

IPC Functions and the require Statement

The msgget Function

The msgsnd Function

(14)

The msgrcv Function

The msgctl Function

The shmget Function

The shmwrite Function

The shmread Function

The shmctl Function

The semget Function

The semop Function

The semctl Function

Summary

Q&A

Workshop

Quiz

Exercises

Day 16 Command-Line Options

Specifying Options

Specifying Options on the Command Line

Specifying an Option in the Program

The -v Option: Printing the Perl Version Number

The -c Option: Checking Your Syntax

The -w Option: Printing Warnings

Checking for Possible Typos

Checking for Redefined Subroutines

Checking for Incorrect Comparison Operators

The -e Option: Executing a Single-Line Program

The -s Option: Supplying Your Own Command-Line Options

The -s Option and Other Command-Line Arguments

The -P Option: Using the C Preprocessor

The C Preprocessor: A Quick Overview

The -I Option: Searching for C Include Files

The -n Option: Operating on Multiple Files

The -p Option: Operating on Files and Printing

The -i Option: Editing Files

Backing Up Input Files Using the -i Option

The -a Option: Splitting Lines

The -F Option: Specifying the Split Pattern

The -0 Option: Specifying Input End-of-Line

The -l Option: Specifying Output End-of-Line

The -x Option: Extracting a Program from a Message

(15)

Miscellaneous Options

The -u Option

The -U Option

The -S Option

The -D Option

The -T Option: Writing Secure Programs

The -d Option: Using the Perl Debugger

Summary

Q&A

Workshop

Quiz

Exercises

Day 17 System Variables

Global Scalar Variables

The Default Scalar Variable: $_

The Program Name: $0

The User ID: $< and $>

The Group ID: $( and $)

The Version Number: $]

The Input Line Separator: $/

The Output Line Separator: $

The Output Field Separator: $,

The Array Element Separator: $"

The Number Output Format: $#

The eval Error Message: $@

The System Error Code: $?

The System Error Message: $!

The Current Line Number: $.

Multiline Matching: $*

The First Array Subscript: $[

Multidimensional Associative Arrays and the $; Variable

The Word-Break Specifier: $:

The Perl Process ID: $$

The Current Filename: $ARGV

The Write Accumulator: $^A

The Internal Debugging Value: $^D

The System File Flag: $^F

Controlling File Editing Using $^I

The Format Form-Feed Character: $^L

(16)

Controlling Debugging: $^P

The Program Start Time: $^T

Suppressing Warning Messages: $^W

The $^X Variable

Pattern System Variables

Retrieving Matched Subpatterns

Retrieving the Entire Pattern: $&

Retrieving the Unmatched Text: the $` and $' Variables

The $+ Variable

File System Variables

The Default Print Format: $~

Specifying Page Length: $=

Lines Remaining on the Page: $-

The Page Header Print Format: $^

Buffering Output: $|

The Current Page Number: $%

Array System Variables

The @_ Variable

The @ARGV Variable

The @F Variable

The @INC Variable

The %INC Variable

The %ENV Variable

The %SIG Variable

Built-In File Variables

STDIN, STDOUT, and STDERR

ARGV

DATA

The Underscore File Variable

Specifying System Variable Names as Words

Summary

Q&A

Workshop

Quiz

Exercises

Day 18 References in Perl 5

Introduction to References

Using References

Using the Backslash Operator

(17)

References and Arrays

Multidimensional Arrays

References to Subroutines

Using Subroutine Templates

Using Subroutines to Work with Multiple Arrays

Pass By Value or By Reference?

References to File Handles

What Does the *variable Operator Do?

Using Symbolic References… Again

Declaring Variables with Curly Braces

More on Hard Versus Symbolic References

For More Information

Summary

Q&A

Workshop

Quiz

Exercises

Day 19 Object-Oriented Programming in Perl

An Introduction to Modules

The Three Important Rules

Classes in Perl

Creating a Class

Blessing a Constructor

Instance Variables

Methods

Exporting Methods

Invoking Methods

Overrides

Destructors

Inheritance

Overriding Methods

A Few Comments About Classes and Objects in Perl

Summary

Q&A

Workshop

Quiz

Exercises

Day 20 Miscellaneous Features of Perl

(18)

The require Function

The require Function and Subroutine Libraries

Using require to Specify a Perl Version

The $#array Variables

Controlling Array Length Using $#array

Alternative String Delimiters

Defining Strings Using <<

Special Internal Values

Using Back Quotes to Invoke System Commands

Pattern Matching Using ?? and the reset Function

Using reset with Variables

Other Features of the <> Operator

Scalar Variable Substitution and <>

Creating a List of Filenames

Global Indirect References and Aliases

Packages

Defining a Package

Switching Between Packages

The main Package

Referring to One Package from Another

Specifying No Current Package

Packages and Subroutines

Defining Private Data Using Packages

Packages and System Variables

Accessing Symbol Tables

Modules

Creating a Module

Importing Modules Into Your Program

Using Predefined Modules

Using Perl in C Programs

Perl and CGI Scripts

Translators and Other Supplied Code

Summary

Q&A

Workshop

Quiz

Exercises

Day 21 The Perl Debugger

(19)

Entering and Exiting the Perl Debugger

Entering the Debugger

Exiting the Debugger

Listing Your Program

The l command

The - Command

The w Command

The // and ?? Commands

The S Command

Stepping Through Programs

The s Command

The n Command

The f command

The Carriage-Return Command

The r Command

Displaying Variable Values

The X Command

The V Command

Breakpoints

The b Command

The c Command

The L Command and Breakpoints

The d and D Commands

Tracing Program Execution

Line Actions

The a Command

The A Command

The < and > Commands

Displaying Line Actions Using the L Command

Other Debugging Commands

Executing Other Perl Statements

The H Command: Listing Preceding Commands

The ! Command: Executing Previous Commands

The T Command: Stack Tracing

The p Command: Printing an Expression

The = Command: Defining Aliases

Predefining Aliases

The h Command: Debugger Help

Summary

Q&A

Workshop

(20)

Quiz

Week 3 Week 3 in Review Appendix A Answers

Answers for Day 1, "Getting Started"

Quiz

Exercises

Answers for Day 2, "Basic Operators and Control Flow"

Quiz

Exercises

Answers for Day 3, "Understanding Scalar Values"

Quiz

Exercises

Answers for Day 4, "More Operators"

Quiz

Exercises

Answers for Day 5, "Lists and Array Variables"

Quiz

Exercises

Answers for Day 6, "Reading from and Writing to Files"

Quiz

Exercises

Answers for Day 7, "Pattern Matching"

Quiz

Exercises

Answers for Day 8, "More Control Structures"

Quiz

Exercises

Answers for Day 9, "Using Subroutines"

Quiz

Exercises

Answers for Day 10, "Associative Arrays"

Quiz

Exercises

Answers for Day 11, "Formatting Your Output"

Quiz

Exercises

Answers for Day 12, "Working with the File System"

Quiz

(21)

Exercises

Answers for Day 13, "Process, String, and Mathematical Functions"

Quiz

Exercises

Answers for Day 14, "Scalar-Conversion and List-Manipulation Functions"

Quiz

Exercises

Answers for Day 15, "System Functions"

Quiz

Exercises

Answers for Day 16, "Command-Line Options"

Quiz

Exercises

Answers for Day 17, "System Variables"

Quiz

Exercises

Answers for Day 18, "References in Perl 5"

Quiz

Exercises

Answers for Day 19, "Object-Oriented Programming in Perl"

Quiz

Exercises

Answers for Day 20, "Miscellaneous Features of Perl"

Quiz

Exercises

Answers for Day 21, "The Perl Debugger"

Quiz

Appendix B ASCII Character Set

Credits

Copyright © 1996 by Sams Publishing SECOND EDITION

All rights reserved. No part of this book shall be reproduced, stored in a retrieval

(22)

system, or transmitted by any means, electronic, mechanical, photocopying, recording, or otherwise, without written permission from the publisher. No patent liability is assumed with respect to the use of the information contained herein. Although every precaution has been taken in the preparation of this book, the publisher and author assume no

responsibility for errors or omissions. Neither is any liability assumed for damages resulting from the use of the information contained herein. For information, address Sams Publishing, 201 W. 103rd St., Indianapolis, IN 46290.

International Standard Book Number: 0-672-30894-0 HTML conversion by : M/s. LeafWriters (India) Pvt. Ltd.

Website : http://leaf.stpn.soft.net

e-mail : leafwriters@leaf.stpn.soft.net

Publisher and President

Richard K. Swadley Acquisitions Manager

Greg Wiegand Development

Manager

Dean Miller Managing Editor Cindy Morrow Marketing Manager John Pierce Assistant

Marketing Manager

Kristina Perry Acquisitions Editor Chris Denny Development

Editors

Angelique Brittingham, Keith Davenport

Software Development Specialist

Steve Straiger Production Editor Tonya R. Simpson

Copy Editor Kimberly K. Hannel Technical Reviewer Elliotte Rusty Harold Editorial

Coordinator

Bill Whitmer Technical Edit Coordinator

Lynette Quinn Formatter Frank Sinclair Editorial

Assistants

Carol Ackerman, Andi Richter Rhonda, Tinch- Mize

Cover Designer Tim Amrhein Book Designer Gary Adair Copy Writer Peter Fuller Production Team

Supervisor

Brad Chinn Production Michael Brumitt, Charlotte Clapp, Jason Hand, Sonja Hart, Louisa

Klucznik, Ayanna Lacey, Clint Lahnen, Paula Lowell, Laura Robbins, Bobbi Satterfield, Carol Sheehan, Chris Wilcox

Acknowledgments

(23)

I would like to thank the following people for their help:

David Macklem at Sietec Open Systems for allowing me to take the time off to work on the first edition of this book

Everyone at Sams Publishing, for their efforts and encouragement

Jim Gardner, for telling the people at Sams Publishing about me

I'd also like to thank all those friends of mine (you know who you are) who tolerated my going stir-crazy as my deadlines approached.

About the Authors

David Till

David Till is a technical writer working in Toronto, Ontario, Canada. He holds a master's degree in computer science from the University of Waterloo; programming

languages was his major field of study. He also has worked in compiler development and on version-control software. He lists his hobbies as "writing, comedy, walking, duplicate bridge, and fanatical support of the Toronto Blue Jays."

He can be reached via e-mail at am671@freenet.toronto.on.ca or davet@klg.com, or on the World Wide Web at http://www.interlog.com/~davet/.

Kamran Husain

Kamran Husain is a software consultant with experience in UNIX system programming.

He has dabbled in all sorts of software for real-time systems applications,

telecommunications, seismic data acquisition and navigation, X Window/Motif and Microsoft Windows applications. He refuses to divulge any more of his qualifications.

Kamran offers consulting services and training classes through his company, MPS Inc., in Houston, Texas. He is an alumnus of the University of Texas at Austin.

You can reach Kamran through Sams Publishing or via e-mail at khusain@neosoft.com or

mpsi@aol.com.

Introduction

This book is designed to teach you the Perl programming language in just 21 days. When you finish reading this book, you will have learned why Perl is growing rapidly in

popularity: It is powerful enough to perform many useful, sophisticated programming tasks, yet it is easy to learn and use.

(24)

Who Should Read This Book?

No previous programming experience is required for you to learn everything you need to know about programming with Perl from this book. In particular, no knowledge of the C programming language is required. If you are familiar with other programming

languages, learning Perl will be a snap. The only assumption this book does make is that you are familiar with the basics of using the UNIX operating system.

Special Features of This Book

This book contains some special elements that help you understand Perl features and concepts as they are introduced:

Syntax boxes

DO/DON'T boxes

Notes

Warnings

Tips

Syntax boxes explain some of the more complicated features of Perl, such as the control structures. Each syntax box consists of a formal definition of the feature followed by an explanation of the elements of the feature. Here is an example of a syntax box:

The syntax of the for statement is

for (expr1; expr2; expr3) { statement_block }

expr1 is the loop initializer. It is evaluated only once, before the start of the loop.

expr2 is the conditional expression that terminates the loop. The conditional expression in expr2 behaves just like the ones in while and if statements: If its value is zero, the loop is terminated, and if its value is nonzero, the loop is executed.

statement_block is the collection of statements that is executed if (and when) expr2 has a nonzero value.

expr3 is executed once per iteration of the loop, and is executed after the last statement in statement_block is executed.

(25)

Don't try to understand this definition yet!

DO/DON'T boxes present the do's and don'ts for a particular task or feature. Here is an example of such a box:

DON'T confuse the | operator (bitwise OR) with the ||

operator (logical OR).

DO make sure you are using the proper bitwise operator.

It's easy to slip and assume you want bitwise OR when you really want bitwise AND. (Trust me.

Notes are explanations of interesting properties of a particular program feature. Here is an example of a note:

NOTE

In left-justified output, the value being displayed appears at the left end of the value field. In right-

justified output, the value being displayed appears at the right end of the value field.

Warnings warn you of programming pitfalls to avoid. Here is a typical warning:

You cannot use the last statement inside the do

statement. The do statement, although it behaves like the other control structures, is actually implemented differently.

Tips are hints on how to write your Perl programs better. Here is an example of a tip:

TIP

(26)

It is a good idea to use all uppercase letters for your file variable names. This makes it easier to distinguish file variable names from other variable names and from reserved words.

Programming Examples

Each feature of Perl is illustrated by examples of its use. In addition, each chapter of this book contains many useful programming examples complete with explanations; these examples show you how you can use Perl features in your own programs.

Each example contains a listing of the program, the input required by and the output generated by the program, and an analysis of how the program works. Special icons are used to point out each part of the example: Type, Input-Output, and Analysis.

In the Input-Output example following Listing IN.1, there are some special typographic conventions. The input you enter is shown in bold monospace type, and the output generated by the system or the program is shown in plain monospace type. The system prompt ($ in the examples in this book) is shown so that you know when a command is to be entered on the command line.

Listing IN.1. A simple Perl program with comments.

1: #!/usr/local/bin/perl

2: # this program reads a line of input, and writes the line 3: # back out

4: $inputline = <STDIN>; # read a line of input 5: print( $inputline ); # write the line out

$ programIN_1

This is a line of input.

This is a line of input.

$

(27)

Line 1 is the header comment. Lines 2 and 3 are comments, not executable lines of code. Line 4 reads a line of input. Line 5 writes the line of input on your screen.

End-of-Day Q& A and Workshop

Each day ends with a Q&A section containing answers to common questions relating to that day's material. There also is a Workshop at the end of each day that consists of quiz questions and programming exercises. The exercises often include BUG BUSTER exercises that help you spot some of the common bugs that crop up in Perl programs. The answers to these quiz questions as well as sample solutions for the exercises are

presented in Appendix A, "Answers."

Conventions Used in This Book

This book uses different typefaces to help you differentiate between Perl code and regular English, and also to help you identify important concepts.

Actual Perl code is typeset in a special monospace font. You'll see this font used in listings and the Input-Output examples, as well as in code snippets. In the

explanations of Perl features, commands, filenames, statements, variables, and any text you see on the screen also are typeset in this font.

Command input and anything that you are supposed to enter appears in a bold monospace font. You'll see this mainly in the Input-Output examples.

Placeholders in syntax descriptions appear in an italicmonospace font. Replace the placeholder with the actual filename, parameter, or whatever element it represents.

Italics highlight technical terms when they first appear in the text and are sometimes used to emphasize important points.

What You'll Learn in 21 Days

In your first week of learning Perl, you'll learn enough of the basics of Perl to write many useful Perl programs. Here's a summary of what you'll learn in Week 1:

Day 1, "Getting Started," tells you how to get Perl, how to run Perl programs, and how to read from your keyboard and write to your screen.

Day 2, "Basic Operators and Control Flow," teaches you about simple arithmetic, how to assign a value to a scalar variable, and how to control execution using conditional statements.

(28)

Day 3, "Understanding Scalar Values," teaches you about integers, floating-point numbers, and character strings. It also shows you that all three are interchangeable in Perl.

Day 4, "More Operators," tells you all about operators and expressions in Perl and talks about operator associativity and precedence.

Day 5, "Lists and Array Variables," introduces you to lists, which are collections of values, and to array variables, which store lists.

Day 6, "Reading from and Writing to Files," tells you how to interact with your file system by reading from input files, writing to output files, and testing for particular file attributes.

Day 7, "Pattern Matching," describes pattern-matching in Perl and shows how you can substitute values and translate sets of characters in text strings.

By the end of Week 2, you'll have mastered almost all the features of Perl; you'll also have learned about many of the library functions supplied with the language. Here's a summary of what you'll learn:

Day 8, "More Control Structures," discusses the control flow statements not previously covered.

Day 9, "Using Subroutines," shows how you can break your program into smaller, more manageable, chunks.

Day 10, "Associative Arrays," introduces one of the most powerful and useful constructs in Perl-arrays-and it shows how you can use these arrays to simulate other data structures.

Day 11, "Formatting Your Output," shows how you can use Perl to produce tidy reports.

Day 12, "Working with the File System," shows how you can interact with your system's directory structure.

Day 13, "Process, String, and Mathematical Functions," describes the library functions that interact with processes running on the system. It also describes the functions that perform trigonometric and other

mathematical operations, and the functions that operate on strings.

(29)

Day 14, "Scalar-Conversion and List-Manipulation Functions," describes the library functions that convert values from one form to another and the functions that work with lists and array variables.

By the end of Week 3, you'll know all the features and capabilities of Perl. It covers the rest of the Perl library functions and describes some of the more esoteric concepts of the language. Here's a summary of what you'll learn:

Day 15, "System Functions," describes the functions that manipulate the Berkeley UNIX and UNIX System V environments.

Day 16, "Command-Line Options," describes the options you can supply with Perl to control how your program runs.

Day 17, "System Variables," describes the built-in variables that are included automatically as part of every Perl program.

Day 18, "References in Perl 5," describes the pointer and reference features of Perl 5, including multi-dimensional arrays.

Day 19, "Object-Oriented Programming in Perl," describes the object- oriented capabilities added to Perl 5. These enable you to hide information and divide your program into individual file modules.

Day 20, "Miscellaneous Features of Perl," covers some of the more exotic or obscure features of the language.

Day 21, "The Perl Debugger," shows you how to use the Perl debugger to discover errors quickly.

(30)

Week 1

Week at a Glance

CONTENTS

Where You're Going

In your first week of teaching yourself Perl, you'll learn enough of the basics to write many useful Perl programs. Although some experience in using a programming language will be an advantage as you read this book, it is not required. In particular, you don't need to know the C programming language before you read this book.

To use this book effectively, you should be able to try out some of the features of Perl as you learn them. To do this, you should have Perl running on your system. If you don't have Perl, Day 1, "Getting Started," tells how you can get it for free.

Each chapter of this book contains quiz and exercise questions that test you on the material covered in the day's lesson. These questions are answered in Appendix A,

"Answers."

Where You're Going

The first week covers the essentials of Perl. Here's a summary of what you'll learn.

Day 1, "Getting Started," tells you how to get Perl, how to run Perl programs, and how to read input from your keyboard and write output to your screen.

Day 2, "Basic Operators and Control Flow," teaches you about simple arithmetic, how to assign a value to a scalar variable, and how to control execution using conditional statements.

Day 3, "Understanding Scalar Values," teaches you about integers, floating-point

(31)

numbers, and character strings. It also shows you that all three are interchangeable in Perl.

Day 4, "More Operators," tells you all about operators and expressions in Perl and talks about operator associativity and precedence.

Day 5, "Lists and Array Variables," introduces you to lists, which are collections of values, and to array variables, which store lists.

Day 6, "Reading from and Writing to Files," tells you how to interact with your file system by reading from input files, writing to output files, and testing for particular file attributes.

Finally, Day 7, "Pattern Matching," describes pattern matching in Perl and shows how you can substitute values and translate sets of characters in text strings.

This is quite a bit of material to learn in one week; however, by the end of the week you'll know most of the essentials of Perl and will be able to write many useful programs.

(32)

Chapter 1

Getting Started

CONTENTS

What Is Perl?

How Do I Find Perl?

Where Do I Get Perl?

Other Places to Get Perl

A Sample Perl Program

Running a Perl Program

If Something Goes Wrong

The First Line of Your Perl Program: How Comments Work

Comments

Line 2: Statements, Tokens, and <STDIN>

Statements and Tokens

Tokens and White Space

What the Tokens Do: Reading from Standard Input

Line 3: Writing to Standard Output

Function Invocations and Arguments

Error Messages

Interpretive Languages Versus Compiled Languages

Summary

Q&A

Workshop

Quiz

Exercises

Welcome to Teach Yourself Perl 5 in 21 Days. Today you'll learn about the following:

What Perl is and why Perl is useful

How to get Perl if you do not already have it

How to run Perl programs

How to write a very simple Perl program

The difference between interpretive and compiled programming languages

What an algorithm is and how to develop one

(33)

What Is Perl?

Perl is an acronym, short for Practical Extraction and Report Language. It was designed by Larry Wall as a tool for writing programs in the UNIX environment and is

continually being updated and maintained by him.

For its many fans, Perl provides the best of several worlds. For instance:

Perl has the power and flexibility of a high-level programming language such as C. In fact, as you will see, many of the features of the language are borrowed from C.

Like shell script languages, Perl does not require a special compiler and linker to turn the programs you write into working code. Instead, all you have to do is write the program and tell Perl to run it. This means that Perl is ideal for producing quick solutions to small programming problems, or for creating prototypes to test potential solutions to larger problems.

Perl provides all the features of the script languages sed and awk, plus features not found in either of these two languages. Perl also supports a sed-to-Perl translator and an awk-to-Perl translator.

In short, Perl is as powerful as C but as convenient as awk, sed, and shell scripts.

NOTE

This book assumes that you are familiar with the basics of using the UNIX operating system

As you'll see, Perl is very easy to learn. Indeed, if you are familiar with other programming languages, learning Perl is a snap. Even if you have very little

programming experience, Perl can have you writing useful programs in a very short time.

By the end of Day 2, "Basic Operators and Control Flow," you'll know enough about Perl to be able to solve many problems.

How Do I Find Perl?

To find out whether Perl already is available on your system, do the following:

If you are currently working in a UNIX programming environment, check to see whether the file /usr/local/bin/perl exists.

If you are working in any other environment, check the place where you

normally keep your executable programs, or check the directories accessible from your PATH environment variable.

Références

Documents relatifs

Exercise 2.1 Write a program called grep.pl that takes a pattern and a list of files as command line arguments, and that traverses each file printing lines that match the

If all you want is a quick reference guide to the different areas of Perl, then use the appendixes at the end of the book and on the Web at www.osborne.com, which cover

We propose a probabilistic analysis of the num- ber of LMS-factors in a random word of length n, for classical models of random words: uniform distributions, memoryless sources

TIP: If you move a control using the Ctrl+arrow method and want to align it again to the grid, choose Edit | Align to Grid from the main menu.. The control's top-left corner will

The différences between the asymptotic distribution of the bootstrap sample mean for infinitesimal arrays and for sequences of independent identically distributed

You just returned from a seminar where the speaker described a novel amino acid motif found in genes involved infection.. Your goal is to use Perl to search all the genes in your

– You can download thousands of modules from CPAN (Comphrehensive Perl Archive Network) www.cpan.org. Installing modules on a

– BLAST the sequence of each of the genes in your hash from last time against a local copy of the swissprot database.. – read the output files to grab the top hit for