cse 341 -- s. tanimoto perl introduction 1 perl practical extraction and report language perl:...

20
CSE 341 -- S. Tanimoto 1 Perl Practical Extraction and Report Language Perl: Developed by Larry Wall in the late 1980s. Builds on... sh awk sed c Perl is a fully general programming language, but it’s particularly well- adapted to processing “text”.

Upload: hollie-cooper

Post on 19-Dec-2015

214 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: CSE 341 -- S. Tanimoto Perl Introduction 1 Perl Practical Extraction and Report Language Perl: Developed by Larry Wall in the late 1980s. Builds on

CSE 341 -- S. Tanimoto Perl Introduction

1

PerlPractical Extraction and Report Language

Perl: Developed by Larry Wall in the late 1980s.Builds on...shawksedc

Perl is a fully general programming language, but it’s particularly well-adapted to processing “text”.

Page 2: CSE 341 -- S. Tanimoto Perl Introduction 1 Perl Practical Extraction and Report Language Perl: Developed by Larry Wall in the late 1980s. Builds on

CSE 341 -- S. Tanimoto Perl Introduction

2

Scripting LanguagesScripting in Drama: programming the sequence of actor’s actions and utterances. A play is represented by a script.

Scripting in software systems: programming a sequence of operations to be performed by a software system. Scripting operations are typically higher-level operations than machine instructions, typically application-oriented.

Examples: Gnu Emacs is scripted with elisp. The GIMP (Gnu Image Manipulation Program) is scripted with a dialect of Scheme.

Shell-level scripting language: Glue that ties together programs written in other languages.

Page 3: CSE 341 -- S. Tanimoto Perl Introduction 1 Perl Practical Extraction and Report Language Perl: Developed by Larry Wall in the late 1980s. Builds on

CSE 341 -- S. Tanimoto Perl Introduction

3

Is Scripting a Paradigm?No, not like functional programming or object-oriented programming. Scripting does not seem to require a different model for how computation works.

Yet there are noticeable patterns that arise in scripts for particular types of applications.

In CGI scripting for the web, many scripts begin by collecting input data, using it to access a database, and then they output a web page.

Page 4: CSE 341 -- S. Tanimoto Perl Introduction 1 Perl Practical Extraction and Report Language Perl: Developed by Larry Wall in the late 1980s. Builds on

CSE 341 -- S. Tanimoto Perl Introduction

4

Perl and the Web

One-pass compilation means Perl programs can be efficiently compiled on demand.

Perl makes it easy to process text (and generate HTML!).

With contributed modules in the CPAN library, Perl has become a defacto standard for CGI programming on the Web, esp. on Unix servers.

Page 5: CSE 341 -- S. Tanimoto Perl Introduction 1 Perl Practical Extraction and Report Language Perl: Developed by Larry Wall in the late 1980s. Builds on

CSE 341 -- S. Tanimoto Perl Introduction

5

Perl vs Java

Server vs Client...

Input info may be too sensitive to send over the net to an applet.

Applet downloading and startup cause high latency.

No special browser plugins are needed, since Perl doesn’t run in the browser.

Page 6: CSE 341 -- S. Tanimoto Perl Introduction 1 Perl Practical Extraction and Report Language Perl: Developed by Larry Wall in the late 1980s. Builds on

CSE 341 -- S. Tanimoto Perl Introduction

6

Perl has a “Little Language” philosophySmall numbers of variables means less concern about name conflicts... declarations not required.

Perl grows out of a systems-programming context.

Conciseness was valued over transparency.

The meanings of language features are often dependent on context (e.g., list context vs scalar context).

One system may consist of many Perl scripts.

Page 7: CSE 341 -- S. Tanimoto Perl Introduction 1 Perl Practical Extraction and Report Language Perl: Developed by Larry Wall in the late 1980s. Builds on

CSE 341 -- S. Tanimoto Perl Introduction

7

Comments on the Book by SebestaA Little Book on Perl, by Robert W. Sebesta is a recent book (2000). It covers Perl 5.005. (Perl 5.8 has since come out, but Sebesta's book is generally consistent with it.)

The book is clearly written and covers the right stuff.

Sebesta is the author of a popular text on programming languages.

Page 8: CSE 341 -- S. Tanimoto Perl Introduction 1 Perl Practical Extraction and Report Language Perl: Developed by Larry Wall in the late 1980s. Builds on

CSE 341 -- S. Tanimoto Perl Introduction

8

Running a Perl Program

#!/usr/bin/perl

print("Out of the oyster!\n"); # comment

Make sure the file is executable:chmod +x howdy.plRun the program from the command line:./howdy.pl

Page 9: CSE 341 -- S. Tanimoto Perl Introduction 1 Perl Practical Extraction and Report Language Perl: Developed by Larry Wall in the late 1980s. Builds on

CSE 341 -- S. Tanimoto Perl Introduction

9

A Perl Script for the Web

#!/usr/bin/perlprint "Content-type: text/html\n\n";$now = localtime();print "<html><body>";print "<h2>The time is $now\n";print " </h2></body></html>";

Page 10: CSE 341 -- S. Tanimoto Perl Introduction 1 Perl Practical Extraction and Report Language Perl: Developed by Larry Wall in the late 1980s. Builds on

CSE 341 -- S. Tanimoto Perl Introduction

10

Online help

perldoc perl (overview)perldoc perlfaq (freq. asked questions)perldoc perldata (data structures)perldoc perlsyn (syntax)perldoc perlop (operators and precedence)perldoc perlre (regular expressions)perldoc perlrun (execution and options)perldoc -f split (info on a function)

Page 11: CSE 341 -- S. Tanimoto Perl Introduction 1 Perl Practical Extraction and Report Language Perl: Developed by Larry Wall in the late 1980s. Builds on

CSE 341 -- S. Tanimoto Perl Introduction

11

The Fundamental Data Types

$n = 25; # a numeric scalar

$str = "Here is a string";

print('The value of $n is ' . $n);

# Note strings with ' ' do not have# variable "interpolation" performed# But strings with " " DO have it.

print("The value is $n.");

Page 12: CSE 341 -- S. Tanimoto Perl Introduction 1 Perl Practical Extraction and Report Language Perl: Developed by Larry Wall in the late 1980s. Builds on

CSE 341 -- S. Tanimoto Perl Introduction

12

String Operations

"string1" . "string2" # concatenation

Can also be done using interpolation:$str1 = "abc";$str2 = "def";$newstr = "$str1$str2";

Page 13: CSE 341 -- S. Tanimoto Perl Introduction 1 Perl Practical Extraction and Report Language Perl: Developed by Larry Wall in the late 1980s. Builds on

CSE 341 -- S. Tanimoto Perl Introduction

13

Support for processing text: Immediate, embedded (“Here”)

Documents

print << "END-OF-PRINT";Hello there.This is a two-line immediate text doc.END-OF-PRINT

Page 14: CSE 341 -- S. Tanimoto Perl Introduction 1 Perl Practical Extraction and Report Language Perl: Developed by Larry Wall in the late 1980s. Builds on

CSE 341 -- S. Tanimoto Perl Introduction

14

Choice of Interpolating or Not

$dollars = 64000;print <<”EOT”;The $dollars question.Are $dollars printed out here?EOT

Page 15: CSE 341 -- S. Tanimoto Perl Introduction 1 Perl Practical Extraction and Report Language Perl: Developed by Larry Wall in the late 1980s. Builds on

CSE 341 -- S. Tanimoto Perl Introduction

15

Choice of Interpolating or Not

$dollars = 64000;print <<’EOT’;The $64000 question.Are $dollars printed out here?EOT

Page 16: CSE 341 -- S. Tanimoto Perl Introduction 1 Perl Practical Extraction and Report Language Perl: Developed by Larry Wall in the late 1980s. Builds on

CSE 341 -- S. Tanimoto Perl Introduction

16

Interpolation -- Not

The $64000 question.Are $dollars printed out here?

Page 17: CSE 341 -- S. Tanimoto Perl Introduction 1 Perl Practical Extraction and Report Language Perl: Developed by Larry Wall in the late 1980s. Builds on

CSE 341 -- S. Tanimoto Perl Introduction

17

Arrays

@trees = ("Oak", "Maple", "Madrona");

@moretrees = qw(pine alter hemlock);

@ages = (75, 50.5, "twenty");

$mytree = $trees[1]; # "Maple"

Page 18: CSE 341 -- S. Tanimoto Perl Introduction 1 Perl Practical Extraction and Report Language Perl: Developed by Larry Wall in the late 1980s. Builds on

CSE 341 -- S. Tanimoto Perl Introduction

18

Hashes (Associative Arrays)

$foodtype{"Spaghetti"} = "Italian";

$thetype = $foodtype{"Spaghetti"};

foreach $food (keys %foodtype) { $thetype = $foodtype{$food}; print "Food $food is $thetype\n";}

Page 19: CSE 341 -- S. Tanimoto Perl Introduction 1 Perl Practical Extraction and Report Language Perl: Developed by Larry Wall in the late 1980s. Builds on

CSE 341 -- S. Tanimoto Perl Introduction

19

Quick Example of CGI Processing:

The HTML Form<html><body><form method=post action="http://www.domain.edu/do-something.pl">

Type your user name:<input type=text name=username size=20><input type=submit value="Click here">

</form> </body></html>

Page 20: CSE 341 -- S. Tanimoto Perl Introduction 1 Perl Practical Extraction and Report Language Perl: Developed by Larry Wall in the late 1980s. Builds on

CSE 341 -- S. Tanimoto Perl Introduction

20

CGI Processing:

The Perl Script

#!/usr/bin/perluse CGI qw/:standard/;

$theName = param("username");

print "Content-type: text/html\n\n";print " <html><body><h2>";print " Your user name is $theName";print "</h2></body></html>";