1 introduction to scripting languages (with perl)

19
1 Introduction to Scripting Introduction to Scripting Languages (with Perl) Languages (with Perl)

Upload: randall-atkins

Post on 13-Dec-2015

217 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 1 Introduction to Scripting Languages (with Perl)

11

Introduction to Scripting Introduction to Scripting Languages (with Perl)Languages (with Perl)

Page 2: 1 Introduction to Scripting Languages (with Perl)

22

Origin of Scripting LanguagesOrigin of Scripting Languages

• Scripting languages originated as Scripting languages originated as job control job control languageslanguages

– 1960s: IBM System 360 had the Job Control Language1960s: IBM System 360 had the Job Control Language– ScriptsScripts used to control other programs used to control other programs

» Launch compilation, executionLaunch compilation, execution» Check return codesCheck return codes

• Scripting languages got increasingly more powerful Scripting languages got increasingly more powerful in the UNIX worldin the UNIX world

– Shell programming, AWK, Tcl/Tk, PerlShell programming, AWK, Tcl/Tk, Perl– ScriptsScripts used to combine used to combine componentscomponents

» GluingGluing applications [Ousterhout, 97] applications [Ousterhout, 97]

Page 3: 1 Introduction to Scripting Languages (with Perl)

33

System Programming LanguagesSystem Programming Languages

• System programming languages replaced assembly System programming languages replaced assembly languageslanguages

– Benefits:Benefits:» The compiler hides unnecessary details, so these languages have a The compiler hides unnecessary details, so these languages have a

higher level of abstraction, increasing productivityhigher level of abstraction, increasing productivity» They are They are strongly typedstrongly typed, , i.e. i.e. meaning of information is specified meaning of information is specified

before its use, enabling substantial error checking at compile timebefore its use, enabling substantial error checking at compile time» They make programs more portableThey make programs more portable

– SPLs and ALs are both intended to write application from SPLs and ALs are both intended to write application from scratchscratch

– SPLs try to minimize the loss in performance with respect SPLs try to minimize the loss in performance with respect to ALsto ALs

– E.g.E.g. PL/1, Pascal, C, C++, Java PL/1, Pascal, C, C++, Java

Page 4: 1 Introduction to Scripting Languages (with Perl)

44

Higher-level ProgrammingHigher-level Programming

• Scripting languages provide an even higher-level of Scripting languages provide an even higher-level of abstractionabstraction

– The main goal is programming productivityThe main goal is programming productivity» Performance is a secondary considerationPerformance is a secondary consideration

– Modern SL provide primitive operations with greater Modern SL provide primitive operations with greater functionalityfunctionality

• Scripting languages are usually interpretedScripting languages are usually interpreted– Interpretation increases speed of developmentInterpretation increases speed of development

» Immediate feedbackImmediate feedback

– Compilation to an intermediate format is commonCompilation to an intermediate format is common

Page 5: 1 Introduction to Scripting Languages (with Perl)

55

Higher-level ProgrammingHigher-level Programming

• They are They are weakly typedweakly typed– I.e. I.e. Meaning of information is inferredMeaning of information is inferredLess error checking at compile-time Less error checking at compile-time

» Run-time error checking is less efficient, but possibleRun-time error checking is less efficient, but possibleWeak typing increases speed of developmentWeak typing increases speed of development

» More flexible interfacingMore flexible interfacing» Fewer lines of codeFewer lines of code

• They are not usually appropriate forThey are not usually appropriate for– Efficient/low-level programmingEfficient/low-level programming– Large programsLarge programs

Page 6: 1 Introduction to Scripting Languages (with Perl)

66

Typing and ProductivityTyping and Productivity

[Ousterhout, 97][Ousterhout, 97]

Page 7: 1 Introduction to Scripting Languages (with Perl)

77

Perl Perl (Practical Extraction and Report Language)(Practical Extraction and Report Language)

• Larry Wall created Perl in the late 80sLarry Wall created Perl in the late 80s– Wanted a notation that was more powerful than the Unix Wanted a notation that was more powerful than the Unix

scripting facilitiesscripting facilities– Wanted linguistic “naturalness”… shortcuts, choices, Wanted linguistic “naturalness”… shortcuts, choices,

defaults, flexibilitydefaults, flexibility

• Perl is dense and richPerl is dense and rich– ““Swiss-army chainsaw”Swiss-army chainsaw”– ““duct tape for the Web”duct tape for the Web”– ““there’s more than one way to do it”there’s more than one way to do it”– Experienced Perl programmers often reach for the manual Experienced Perl programmers often reach for the manual

when reading others’ codewhen reading others’ code

Page 8: 1 Introduction to Scripting Languages (with Perl)

88

Perl… goalsPerl… goals

• Larry Wall on PerlLarry Wall on Perl– ..."I realized at that point that there was a huge ecological ..."I realized at that point that there was a huge ecological

niche between the C language and Unix shells," says Wall. niche between the C language and Unix shells," says Wall. "C was good for manipulating complex things -- you can "C was good for manipulating complex things -- you can call it 'manipulexity.' And the shells were good at call it 'manipulexity.' And the shells were good at whipping up things -- what I call 'whipupitude.' But there whipping up things -- what I call 'whipupitude.' But there was this big blank area where neither C nor shell were was this big blank area where neither C nor shell were good, and that's where I aimed Perl."good, and that's where I aimed Perl."

• Manipulexity Manipulexity vs.vs. whipupitude whipupitude

Page 9: 1 Introduction to Scripting Languages (with Perl)

99

Brief Perl TimelineBrief Perl Timeline

• 1969 Unix created at Bell Labs1969 Unix created at Bell Labs

• 1977 awk is invented by Aho 1977 awk is invented by Aho et al.et al.

• 1978 “sh” shell is developed for Unix1978 “sh” shell is developed for Unix

• 1987 Perl is created by L. Wall1987 Perl is created by L. Wall

• 1995 Perl 5.001 released (up to about 5.8.0 now)1995 Perl 5.001 released (up to about 5.8.0 now)

Page 10: 1 Introduction to Scripting Languages (with Perl)

1010

Perl DefinedPerl Defined

• Original “man” page for PerlOriginal “man” page for PerlPerl is (an) interpreted language optimized for scanning Perl is (an) interpreted language optimized for scanning

arbitrary text files, extracting information from those text files, arbitrary text files, extracting information from those text files, and printing reports based on that information. It's also a good and printing reports based on that information. It's also a good language for many system management tasks. The language language for many system management tasks. The language is intended to be practical (easy to use, efficient, complete) is intended to be practical (easy to use, efficient, complete) rather than beautiful (tiny, elegant, minimal). It combines (in rather than beautiful (tiny, elegant, minimal). It combines (in the author's opinion, anyway) some of the best features of C, the author's opinion, anyway) some of the best features of C, sed, awk, and sh, so people familiar with those languages sed, awk, and sh, so people familiar with those languages should have little difficulty with it. (Language historians will should have little difficulty with it. (Language historians will also note some vestiges of csh, Pascal, and even BASIC|PLUS.) also note some vestiges of csh, Pascal, and even BASIC|PLUS.) Expression syntax corresponds quite closely to C expression Expression syntax corresponds quite closely to C expression syntax. If you have a problem that would ordinarily use sed or syntax. If you have a problem that would ordinarily use sed or awk or sh, but it exceeds their capabilities or must run a little awk or sh, but it exceeds their capabilities or must run a little faster, and you don't want to write the silly thing in C, then faster, and you don't want to write the silly thing in C, then perl may be for you. There are also translators to turn your perl may be for you. There are also translators to turn your sed and awk scripts into perl scripts. sed and awk scripts into perl scripts.

OK, enough hype.OK, enough hype.

Page 11: 1 Introduction to Scripting Languages (with Perl)

1111

What Perl Does Well What Perl Does Well

• String manipulationString manipulation

• Text processingText processing

• File handlingFile handling

• Regular expressions and pattern matchingRegular expressions and pattern matching

• Flexible arrays and hashesFlexible arrays and hashes

• System interactions (directories, files, processes)System interactions (directories, files, processes)

• CGI scripts for Web sitesCGI scripts for Web sites

Has objects, pointers, threads, etc. but these are not the Has objects, pointers, threads, etc. but these are not the original design goalsoriginal design goals

Page 12: 1 Introduction to Scripting Languages (with Perl)

1212

Perl Overview Perl Overview

• Perl is interpretedPerl is interpreted– Actually, compiled to bytecode and the bytecode Actually, compiled to bytecode and the bytecode

interpretedinterpreted

• Every statement ends in semicolonEvery statement ends in semicolon

• Comments begin with # and extend one lineComments begin with # and extend one line

• Perl syntax is considered convoluted by some, Perl syntax is considered convoluted by some, elegant and efficient by otherselegant and efficient by others

Page 13: 1 Introduction to Scripting Languages (with Perl)

1313

Built-in Data Types Built-in Data Types

• No type declarationsNo type declarations– Types are distinguished lexically (by first character)Types are distinguished lexically (by first character)

• Perl Perl does notdoes not have integer, float, boolean, etc. have integer, float, boolean, etc. typestypes like other languageslike other languages

– In Perl, these are values of type ScalarIn Perl, these are values of type Scalar

• Perl has 3 types:Perl has 3 types:– ScalarScalar– ArrayArray– Hash (associative array)Hash (associative array)

Page 14: 1 Introduction to Scripting Languages (with Perl)

1414

Built-in Data Types: ScalarBuilt-in Data Types: Scalar

• ScalarScalar– Integer, real, boolean, string valuesInteger, real, boolean, string values– Scalar variables begin with $Scalar variables begin with $– $a $A $var1 $fooDeeBar $_ $a $A $var1 $fooDeeBar $_ # case # case

mattersmatters– $a = 5 ;$a = 5 ;– $a = 3.5;$a = 3.5;– $a = “hi there” ;$a = “hi there” ;– $a += 2 ; $a += 2 ; # what happens here?# what happens here?

Page 15: 1 Introduction to Scripting Languages (with Perl)

1515

Context… conversions Context… conversions

• When a scalar is used the value is converted as When a scalar is used the value is converted as appropriate for the contextappropriate for the context– $a = 5 ;$a = 5 ;– $a = $a . “ is a good number” ; $a = $a . “ is a good number” ; # string # string

concatenationconcatenation– print $a ;print $a ;– $a = “3.7” ;$a = “3.7” ;– $b = $a + 43 ;$b = $a + 43 ;– print “$b \n”; print “$b \n”; # string in $a is treated as real # string in $a is treated as real

numbernumber– print ‘$b \n’ ;print ‘$b \n’ ;

Page 16: 1 Introduction to Scripting Languages (with Perl)

1616

Built-in Data Types: ArrayBuilt-in Data Types: Array

• ArrayArray– array variables begin with @array variables begin with @– @a @var1 @fooDeeBar @a @var1 @fooDeeBar – @a = ( 9, 5, 7.1, “last elt” ) ;@a = ( 9, 5, 7.1, “last elt” ) ;– $a[1] = 12 ;$a[1] = 12 ;– print “first element is $a[0]\n”;print “first element is $a[0]\n”;– print $#a ; print $#a ; # tells largest used subscript# tells largest used subscript– @b = @a ;@b = @a ;

Page 17: 1 Introduction to Scripting Languages (with Perl)

1717

Built-in Data Types: HashBuilt-in Data Types: Hash

• HashHash– hash variables begin with %hash variables begin with %– They are also distinguished by use of { } for They are also distinguished by use of { } for

subscriptssubscripts– Subscript can be any scalar (usually a string)Subscript can be any scalar (usually a string)– %a = ( “first”, 43, “second”, 26, “third”, 17 ) ;%a = ( “first”, 43, “second”, 26, “third”, 17 ) ;– print $a{‘second’} ;print $a{‘second’} ;– $a{‘seventeenth’} = 3.1415926 ;$a{‘seventeenth’} = 3.1415926 ;– $a{‘first’} = 41 ;$a{‘first’} = 41 ;– $z = “third” ;$z = “third” ;– $a{$z} = “$z place” ; $a{$z} = “$z place” ; # what does this do?# what does this do?

Page 18: 1 Introduction to Scripting Languages (with Perl)

1818

Built-in Data Types: HashBuilt-in Data Types: Hash

• HashHash– Hashes are very useful for text processingHashes are very useful for text processing– Build tables, lists, etc.Build tables, lists, etc.– Built-in functions for getting list of all Built-in functions for getting list of all

subscripts (called keys)subscripts (called keys)– For example For example

%a = ( “first”, 21, “seventeenth”, 41, “2nd”, 27, “1”, %a = ( “first”, 21, “seventeenth”, 41, “2nd”, 27, “1”, “one” );“one” );

foreach ( keys(%a) ) { foreach ( keys(%a) ) { # loads built-in var $_ with a key# loads built-in var $_ with a key print "( $a{$_} ) : $_ \n" ; print "( $a{$_} ) : $_ \n" ;

}}

Page 19: 1 Introduction to Scripting Languages (with Perl)

1919

Reading AssignmentReading Assignment

• John K. Ousterhout, John K. Ousterhout, Scripting: Higher-Level Scripting: Higher-Level Programming for the 21Programming for the 21stst Century Century, 1997, 1997

– http://home.pacbell.net/ouster/scripting.htmlhttp://home.pacbell.net/ouster/scripting.html

• D. Stotts, D. Stotts, The PERL Scripting LanguageThe PERL Scripting Language, 2003, 2003– http://rockfish-cs.cs.unc.edu/COMP144/IEPerl.pdfhttp://rockfish-cs.cs.unc.edu/COMP144/IEPerl.pdf