Intro To Perl Programming

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 70

Introduction to Perl Programming

Presentation for LX865 Gregory Garretson December 6, 2004 Originally a presentation for the Perl Learning Group !L"#$% clab&'b&'e(&)

Overview
*' **' *-' -' -*' + fe, intro(&ctory notes +bo&t Perl an( programming -ariables !on(itionals an( loops ./ercises

***' Perl basics

-**' 0ore st&ff

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 2

I. A few introductory notes

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 3

Caveats

*1m a ling&ist' * ha2e no formal bac3gro&n( in comp&ter science' *f yo& ha2e (iffic&lt 4&estions abo&t comp&ter science, as3 Pa&l' * (o 3no, ho, to program 4&ite ,ell in Perl, b&t * am not an e/pert' 5here are many, many things yo& can (o ,ith Perl, an( * ha2e learne( only a small s&bset of these'
6a2ing sai( that, feel free to as3 me things if yo& thin3 * can help ,ith yo&r e/ercises'

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 4

Nomenclature

6ere are some terms that are &se( pretty m&ch interchangeably in this presentation' Don1t let this conf&se yo&'

script 7 program coding 7 programming execute 7 run evaluate 7 test

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 5

Formatting

8ormal e/pository te/t is in this font' 5e/t that represents ,hat you type is sho,n li3e so%

perl myprogram.pl

5e/t that represents comp&ter o&tp&t on the screen is sho,n li3e so%

File not found. C:\>

5hings ,ritten in angle brac3ets sho&l( be replace( ,ith the appropriate te/t%

perl <your program> -w


Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04) Slide 6

II. A out Perl and programming

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 7

!"at is Perl#

Perl is an interpreted programming lang&age' 0ore on ,hat that means soon') +ny programming lang&age is essentially a h&man9frien(ly formalism for ,riting instr&ctions for a comp&ter to follo,' 5hese instr&ctions are at some point translate( into machine lang&age, ,hich is ,hat the comp&ter really :&n(erstan(s:'

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 8

Programming languages vs. "uman languages

;ince ,e1re all ling&ists, it1s interesting to thin3 for a moment abo&t the (ifferences bet,een comp&ter lang&ages an( :nat&ral: lang&ages%

0ost programming lang&ages (o ha2e rec&rsi2e synta/, an( th&s can theoretically generate infintely comple/ str&ct&res, li3e h&man lang&age' +lso, programming lang&ages ha2e :synta/: an( :semantics:, an( something a3in to ,or( classes' 6o,e2er, programming lang&ages ha2e e/tremely small le/icons, an( 2ery restricte( syntactic r&les' +nother big (ifference is that comp&ter lang&ages (eal ,ith 2ery restricte( (omains compare( to h&man lang&ages, ,hich are m&ch more general an( fle/ible'
Slide 9

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Programming languages vs. "uman languages

*mportantly, comp&ter programs cannot tolerate ambig&ity<programs m&st be absol&tely precise' Pragmatics (oesn1t really enter into the pict&re= a comp&ter can1t :fig&re o&t ,hat yo& mean: in spite of ,hat yo& say i'e', no implicat&re)' *f there is a co&nter9e/ample to this, it is probably Perl, ,hich is e/tremely a(ept at :(oing the right thing:, ,ith a limite( amo&nt of e/plicitness in the instr&ctions' +lso, Perl li3e !O#OL an( some other lang&ages) ,as (esigne( to so&n( as m&ch as possible li3e .nglish, so it1s relati2ely &ser9frien(ly' >elati2ely'

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 10

$"at said...

One big (ifference bet,een ,riting programs an( ,riting other sorts of (oc&ments is that yo&r programs m&st ha2e perfect synta/, or they ,ill not ,or3' .2ery little comma an( semicolon is critical' 5herefore, in ,riting co(e, it is 2ital to be absol&tely metic&lo&s' Other,ise, yo& ,ill ,eep an( gnash yo&r teeth an( generally not ha2e m&ch f&n' On the bright si(e, the synta/ is act&ally really easy' 0any, many times easier than in any h&man lang&age' On the e2en brighter si(e, Perl is a 2ery forgi2ing lang&age that allo,s for m&ltiple forms of e/pression' 5hat means that yo& can say something in 2ario&s ,ays, as long as yo&r synta/ is correct'

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 11

%ou and your computer

* li3e to thin3 of it this ,ay% $"e computer is very energetic ut very very stupid.

5he comp&ter can (o things incre(ibly fast an( efficiently, b&t it can1t (o m&ch ,itho&t being tol( e/actly ho, to (o it'

*magine the comp&ter co&l( get yo& a glass of ,ater' *nstea( of saying :Get me a glass of ,ater: no nee( to be polite), yo& ,o&l( ha2e to say something li3e%
0o2e to the (oor, tra2elling north9east' ?hen yo& reach the (oor, locate the han(le an( rotate it co&nter9cloc3,ise a 4&arter t&rn' ;,ing the (oor to,ar(s yo&, mo2ing o&t of the ,ay as it approaches' 5hen procee( thro&gh the (oor,ay an( east to the 3itchen' Locate the refrigerator'''

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 12

!"y write programs#

5here are many reasons to ,rite yo&r o,n programs' ;ome are more ob2io&s than others'
@) ;ometimes yo& can1t fin( pre9e/isting soft,are to (o ,hat yo& nee( (one' 2) ;ometimes it1s easier an( faster to (o something yo&rself than to &se pre9e/isting soft,are' A) ;ometimes yo& ,ant a 2ery high (egree of control, one that yo& can1t get ,ith rea(y9ma(e soft,are' 4) Bo& (on1t ,ant to ha2e to hire someone else to ,or3 ,ith yo&r (ata, or other,ise ce(e control of yo&r ,or3' 5) Programming can get yo& 2ery close to yo&r (ata% yo& really see them an( thin3 abo&t them more than yo& might other,ise'

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 13

!"y write programs#


6) Programming is an enCoyable mental challenge, li3e cross,or( p&DDles or chess, pro2i(e( yo&1re not in o2er yo&r hea(' *t1s a 2ery creati2e acti2ity' E) Programming is extremely satisfying ,hen it ,or3s' Bo& (isco2er a problem, imagine a sol&tion, ,rite a b&nch of co(e, an( the problem is sol2e(' *t offers a far greater sense of clos&re than most acti2ities in o&r fiel(' 8) Programming s3ills are re&sable lang&ages are pretty similar), an( programming can be &sef&l in all sorts of (omains, not C&st ling&istic research' F) Bo&r frien(s ,ill be very impresse('

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 14

Perl vs. ot"er programming languages

0ost programming lang&ages99s&ch as !, !GG, -is&al#asic, etc'99are compiled languages'

5o r&n a program, yo& create a te/t (oc&ment ,ith the co(e, r&n a compiler on it to con2ert it into machine co(e for yo&r O;, an( then r&n it'

Perl in an interpreted language, li3e Ha2a, Pascal, a,3, se(, 5cl, or ;malltal3'

5o r&n a program in s&ch a lang&age, yo& create a te/t (oc&ment an( tell the interpreter or -irt&al 0achine) to r&n it as a program' 5he interpreter chec3s it, compiles it into machine co(e, an( r&ns it' 5he 29step process of interprete( lang&ages ma3es them slightly easier to ,or3 ,ith' Bo& can constantly chec3 yo&r co(e by r&nning it after e2ery change'
Slide 15

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

&istory of Perl

Perl ,as (esigne( in the mi( @F80s by Larry ?all, then a programmer at $nisys, an( self9(escribe( :occasional ling&ist:' 6e combine( &sef&l feat&res of se2eral e/isting lang&ages ,ith a synta/ (esigne( to so&n( as m&ch as possible li3e .nglish' ;ince then, Perl has m&shroome( into a po,erf&l an( pop&lar lang&age, ,ith lots of mo(&les contrib&te( by the open9so&rce comm&nity' Perl is (esigne( to be fle/ible, int&iti2e, easy, an( fast= this ma3es it some,hat :messy:'

Perl has been calle( :a ;,iss9+rmy chainsa,: Perl is also 3no,n as :the (&ct9tape of the *nternet:
Slide 16

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Perl culture

*n many ,ays, Perl is a lang&age for :hac3ers:, not for comp&ter scientists' Perl is (is(aine( by people ,ho prefer lang&ages li3e !, ,hich are more rigi( an( closer to machine co(e' Larry ?all1s perspecti2e is this%

:Perl is a lang&age for getting yo&r Cob (one':

5,o other slogans that are 3ey to 5he Perl ?ay%

:.asy things sho&l( be easy, an( har( things sho&l( be possible': 505O?5D*% :5here1s 0ore 5han One ?ay 5o Do *t':

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 17

&ow you get Perl

One of the great things abo&t Perl is that it is entirely free' *t also r&ns on any platform o&t there' Bo& can get the so&rce co(e or a binary (istrib&tion from the ,eb' 5he main Perl repository is !P+8% the !omprehensi2e Perl +rchi2e 8et,or3

http%II,,,'cpan'org

5here is a binary (istrib&tion for ?in(o,s that yo& can get (irectly from the ma3ers, +cti2e;tate%

http%IIacti2estate'comI

+lso chec3 o&t these sites%

http%IIperl'comI

http%II,,,'perl'orgI
Slide 18

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

III. Perl

asics

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 19

'xecuting a script( way )*

5here are t,o ,ays of r&nning a Perl script% at the comman( line an( from a te/t file' Jor 2ery short scripts, yo& can C&st type t"e w"ole program at the comman( line an( ,atch the comp&ter r&n it'

C:\>perl -e "print 'Hello, World!'" Hello, World! C:\>

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 20

'xecuting a script( way )+

Jor longer scripts an( ones yo& ,o&l( li3e to re&se), yo& create a plain9te/t (oc&ment ,ith the program co(e an( then tell the Perl interpreter to r&n this program, &s&ally on the comman( line'

;a2e as :myprogram'pl:%

!!u"r!#in!perl print 'Hello, World!'$

5hen, on the comman( line%

C:\>perl myprogram.pl Hello, World! C:\>

Depen(ing on yo&r system, yo& might be able to r&n programs in 2ario&s ,aysK 5ry these o&t% perl myprogram.pl myprogram.pl myprogram
Slide 21

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

!riting a script

Perl scriptsIprograms are plain9te/t (oc&ments generally +;!**), &s&ally ,ith the e/tension 'pl, tho&gh this isn1t strictly necessary' Bo& can ,rite scripts in any ,or( processor, tho&gh * recommen( that yo& not &se 0; ?or( or another processor that by (efa&lt sa2es (oc&ments in some binary i'e', non plain9te/t) format'

;ee the ,i3i for lin3s to e(itor applications'

*t1s also 2ery helpf&l to &se a constant9,i(th monospace() font, s&ch as Courier %ew, beca&se then yo& ,ill be able to line &p yo&r co(e easily'
Slide 22

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

!riting a script

?e generally start a Perl script ,ith the :shebang: line, ,hich loo3s something li3e one of these%

!!u"r!#in!perl !!u"r!lo&al!#in!perl !!u"r!lo&al!#in!perl' !!u"r!#in!perl -w et&.

2ery &sef&lK

5his is not necessary on many systems, b&t ,hen it is, it is, so it1s a goo( habit to get into' 5he p&rpose of this line is to tell the ser2er ,hich 2ersion of Perl to &se, by pointing to the location in the ser2er (irectory of the Perl e/ec&table'
Slide 23

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

A first program

Let1s ,rite a first program' Open yo&r te/t9e(itor of choice an( type the follo,ing%

!!u"r!#in!perl print "Hello, World!\n"$

5hen sa2e the file as :helloL,orl('pl:' Preferably, sa2e all yo&r scripts in the same (irectory' * call my (irectory :scripts:' * (on1t &se :perl:, beca&se that ,here all the Perl files are') 8o, ,e nee( to tell the interpreter to e/ec&te the script' ?e (o this at the command line'

*n $8*X, this is calle( a shell= in ?in(o,s, a comman( prompt= in 0ac O; X, a 5erminal ,in(o,'
Slide 24

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Getting to t"e command line

*n ?in(o,s% !lic3 on Command Prompt' 5o get there, yo& may ha2e to loo3 &n(er ,tart-.All Programs-.Accessories *n 0+! O; X% !lic3 on $erminal' 5o get there, yo& may ha2e to loo3 &n(er Applications-./tilities *n $8*X% *f yo&1re r&nning $8*X, yo& are in a shell, pro2i(e( yo&1re logge( on' 5he same goes for X9?in(o, or a similar program'

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 25

Navigating in t"e s"ell

8ote% 5he prompt may loo3 (ifferent ,ays, (epen(ing on yo&r system' $s&ally, it tells yo& ,hat (irectory yo&1re in' 8ote that it1s often c&stomiDable' 6ere are some e/amples%

C:\"&ript"> !(regory!"&ript") *+ome-Computer:,!"&ript"-gregory.

Bo& really only nee( to 3no, one comman( to get aro&n( in the shell% c(' #&t it also helps to 3no, ls (ir in ?in(o,s) an( p,('

0o2e to (ir 1scripts1

mo2e &p one (ir

&d "&ript"

&d ..
Slide 26

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

0asic Perl syntax

Perl thin3s of :lines: (ifferently from h&mans' Jor &s, the most important thing is the carriage ret&rn= for Perl it is the semicolon' +ll lines of co(e in Perl m&st en( ,ith one of t,o things% a semicolon or curly races%

print "Hello."$ "u# /print "Hello."0

+ line of co(e, calle( a statement, is basically a single instr&ction to the comp&ter= it says, :Do x': *t can e/ten( o2er more than one line of the page' +nything in M N is calle( a loc1' + bloc3 can contain se2eral statements'
Slide 27

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Comments

+ny line that begins ,ith the character ) is treate( by Perl as a comment an( is ignore(' 5his means that yo& can p&t lots of comments for h&mans to rea( in yo&r co(e, ,itho&t affecting the program' 5his is a very good idea' 5he O can act&ally come at any point in the line% ,hate2er comes after it ,ill be ignore(' #&t in that case ,hat comes before it ha( better be a 2ali( line of co(eK

12i" ne3t line "ort" alp2a#eti&ally 4name" 5 "ort 64name"7$ 67 optional


Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04) Slide 28

2uote mar1s

Perl ma3es &se of three basic 3in(s of 4&ote mar3s% single 1 1), (o&ble : :), bac34&otes P P) Bo& ,ill &s&ally ,ant to &se (o&ble 4&otes' +s a general r&le, &se the others only if yo& ha2e to' Do&ble 4&otes allo, varia le interpolation' 5hat means that this co(e%

)name 5 "8le9na"$ print "Hello, )name!\n"$

5hese are the 4&otes to ,atchK

,ill print this%

Hello, 8le9na!

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 29

2uote mar1s

;ingle 4&otes ,ill pre2ent interpolation' 5hat means that this co(e%

)name 5 "8le9na"$ print 'Hello, )name!\n'$

,ill print this%

Hello, )name!\n

#ac34&otes P P) r&n an e/ternal program an( grab the o&tp&t' Bo& ,ill rarely, if e2er, &se these'

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 30

0ac1slas" interpolation

Perl has a n&mber of special characters that ha2e a partic&lar meaning ,ithin (o&ble 4&otes an in reg&lar e/pressions' 6ere are t,o important ones%

\n \t

mean" "newline" a.:.a. "&arriage return" mean" "ta#"

;o, here1s ,hat ,e can type an( ,hat ,e1ll get%

print "%ame:\t;e&:y\n<ye":\t2a=el\n"$ %ame: ;e&:y <ye": 2a=el

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 31

I3. 3aria les

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 32

4ata types in Perl

0ost (ata is basically either a string or a num er, or a b&nch of strings or n&mbers' + string is character (ata% :froggy:, :@@9A0904:'

+l,ays ,rite strings ,ithin 4&ote mar3s, as abo2e'

+ num er is e/actly ,hat yo& thin3 it is' 8ote, ho,e2er, that a gi2en piece of (ata that loo3s li3e, say, A00, can be treate( li3e a n&mber e'g', A00 G @) or li3e a string e'g', thro&gh concatenation% A00a)' $nli3e other programming lang&ages, Perl ta3es a 2ery rela/e( attit&(e to,ar( this (istinction' *t basically loo3s at ,hat yo&1re trying to (o an( treats the (ata as the appropriate type'
Slide 33

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

3aria les

5he concept of the varia le is f&n(amental in all programming lang&ages' + 2ariable is essentially a placehol(er for a 2al&e' ?e 3no, 2ariables from basic algebra%

*n x 5 * 6 7, x is a 2ariable'

$se of 2ariables in programming (iffers a bit from algebra% ?e spen( a lot of time creating 2ariables, assigning 2al&es to them, changing the 2al&es, an( rea(ing the 2al&es' -irt&ally all (ata is store( in 2ariables' ?e manage this information thro&gh operators li3e G) an( f&nctions li3e print)'
Slide 34

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

,calars

*n Perl, the three most important types of 2ariables are the scalar, the array an( the "as"' + scalar is a 2ariable that hol(s a single 2al&e' ;calar names begin ,ith 8%
3A9IA0L' 3AL/'

)name 5 "8i"2a"$ )age 5 ">?"$

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 35

Arrays and "as"es

5here are t,o 3in(s of 2ariables that hol( m&ltiple pieces of (ata% arrays an( "as"es' +n array is a 2ariable that hol(s m&ltiple 2al&es in series' +rray names begin ,ith :%

4name" 5 6"Howard", "@e"lie", ";o#"7$

+ "as" is a 2ariable that hol(s pairs of (ata' 6ash names begin ,ith ;%

.trait" 5 6"name" 5> "Howard", "age" 5> "A?", "eye"" 5> "#rown"7$

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 36

3aria le names

5he name of a 2ariable ,hether scalar, array, or hash) begins ,ith the special type9in(icating character 8, :, or ;, respecti2ely), an( then can contain any combination of letters, n&mbers, an( &n(erscores'

6o,e2er, the first character after the 8, etc' m&st be a letter or &n(erscore, not a n&mber' +lso, case *; (istincti2e' ./amples of 2ali( names%

)timeBofBarriCal, )1imeBofB8rriCal )timeofdeparture, )1DE )1imeFG>(o if yo&1re chil(ish)


Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04) Slide 37

Good naming practice

?hen yo& choose 2ariable names, choose ill&strati2e ones, not obsc&re ones%
#+D GOOD

)3 5 "Ho2n"$ )y 5 ";ate""$

)fir"tBname 5 "Ho2n"$ )la"tBname 5 ";ate""$

* ma3e a point of &sing sing&lar names for scalars an( pl&ral names for arrays an( hashes%

)per"on 5 "C2ri"tine"$ 4people 5 6"C2ri"tine", "Hean"7$

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 38

$wo 1inds of operators

5he important one to ,atch o&t for is the :smooth operator:' 8o, C&st 3i((ing' + &sef&l (istinction to 3eep in min( is that bet,een assignment operators an( comparison operators' 5he former give a 2al&e to a 2ariable, an( the latter test the 2al&e of a 2ariable'

5o set the 2al&e of a 2ariable%

)limit 5 I??$

5o test the 2al&e of a 2arable%

*f this ,ere a speech act, it ,o&l( be a performative'

if 6)num#er 55 I??7 /print "@imit!"0


*f this ,ere a speech act, it ,o&l( be a <uestion' Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04) Slide 39

!or1ing wit" scalars

?e assign a 2al&e to a scalar &sing the assignment operator 6, ,hether ,e are (ealing ,ith strings or n&mbers'

)name 5 "<liani"$ )grade 5 I??$

?e can perform math on a scalar if it ma3es sense to (o so%

)grade 5 6)grade J A?7!I??$

?e can perform concatenation on strings ,ith the . operator%

)name 5 )fir"tBname . " " . )la"tBname$ now )name i", e.g., "Kary Hug2e""
Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04) Slide 40

!or1ing wit" arrays

?e can assign 2al&es to arrays in 2ario&s ,ays' 5he most straightfor,ar( is to &se parentheses, ,hich create a :list conte/t:%

4grade" 5 6"LM", "MF", "NA", "ML"7$

5he 2al&es in an array are n&mbere( or indexed), starting wit" =, rather than @' ?e can access any 2al&e in an array by referring to its n&merical in(e/ in s4&are brac3ets%

print ")grade"*?- and )grade"*>-"$ LM and NA

8ote that ,e &se 8 rather than :, beca&se here ,e1re referring not to the ,hole array, b&t to one element in it, ,hich is a scalar'
Slide 41

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

!or1ing wit" arrays

?hen ,e print an array, it ma3es a (ifference ,hether ,e p&t it in (o&ble 4&otes or not= if ,e (o, ,e get spaces bet,een the elements'

4OD1" 5 6"F??", "ANM", "A'>"7$ print 4OD1"$ F??ANMA'> print "4OD1""$ F?? ANM A'> print '4OD1"'$ to reCiew 4OD1"

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 42

Input

Perl nee(s (ata to interact ,ith' 5his (ata typically comes from one of three so&rces% 3eyboar( inp&t, files, or the system the ser2er)'

?e1re only going to co2er the first of these to(ay'

*np&t from the 3eyboar( is so stan(ar( that ,e call it :stan(ar( inp&t:, abbre2iate( ,$4IN' 6ere1s ho, ,e get some inp&t from the 3eyboar(%

)input 5 <+1EP%>$

5his assigns to 8input ,hate2er the &ser type(' $nfort&nately, this also incl&(es the ne,line from ,hen they hit :.nter:, so ,e ta3e that off li3e so%

&2omp 6)input7$

t2e 67 are optional


Slide 43

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

3. Conditionals and loops

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 44

Conditional statements( if

Of co&rse, the po,er of programs comes from their inp&t to react (ifferently to (ifferent (ata' 5he conditional statement is the 3ey to this' 5he if statement has t,o parts% a condition, ,hich is e2al&ate(, an( a loc1, ,hich is e/ec&te( if the con(ition e2al&ates to be tr&e'

if 6)pri&e > I??7 / print "1oo e3pen"iCe!\n"$ 0

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 45

Conditional statements( elsif

+n if statement can optionally be follo,e( by an elsif statement' 5his is e2al&ate( after the if statement only if t"e previous condition evaluated >t"e if statement?s@ was false' 5he t,o bloc3s ,ill ne2er both be e/ect&te('

if 6)pri&e > I??7 /print "e3pen"iCe"0 el"if 6)pri&e < I?7 /print "#argain!"0 el"if 6)pri&e < F?7 /print "&2eap"0

+gain% *f the if statement e2al&ates to tr&e, the elsif statements are C&st s3ippe(' ;imilarly, if the first elsif e2al&ates to tr&e, the secon( is s3ippe('

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 46

Conditional statements( else

+n else statement is a special 3in( of elsif that co2ers all remaining con(itions' *n ling&istics, this is 3no,n as :the else,here con(ition:'

if 6)grade < Q?7 / print "Failing grade!: )grade\n"$ 0 el"e /print "(rade i" )grade.\n"0

8ote that there is no con(ition to be e2al&ate( in an else statement, beca&se it1s the :garbabe can: category an( is al,ays tr&e'

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 47

Loops

+ maCor reason ,e &se comp&ters is that they can (o the same thing many times ,itho&t getting tire( or nee(ing coffee' ?e get them to repeat actions &sing iterative or looping constucts' 5here are three main types of loop statement, ,hich are all relate( b&t specialiDe( for (ifferent &ses% for, foreac", an( w"ile statements'

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 48

?w"ile? loops

!"ile statements are the least comple/ of the three types, so ,e1ll start there' 5hey are similar to con(itional statements, beca&se they ha2e a con(ition an( a bloc3' *f the con(ition e2al&ates to tr&e, the bloc3 is e/ec&te(' 5hen, the con(ition is e2al&ate( again, an( if it?s still true, the bloc3 is 5his represents e/ec&te( again, an( so on'

w2ile 6)money < I???7 / )pay 5 (etBRay&2e&: 67$ )money 5 )money S )pay$ 0 print "D:, we &an pay t2e rent!\n"$
Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

some &ser9(efine( s&bro&tine, ,hich pres&mably chec3s for more money an( ret&rns the 2al&e as 8pay'

Slide 49

?until? loops

/ntil statements are a special type of w"ile statement in ,hich the bloc3 is e/ec&te( until t"e condition evaluates as true' *t1s e4&i2alent to :,hile 8O5 con(ition)''':'

until 6)money < I???7 / )money 5 <atBDut 6)money7$ 0 print "1ime to eat noodle"!\n"$

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 50

?for? loops

For statements are 2ery &sef&l, beca&se they allo, yo& to (o something a preset n&mber of times, or &ntil a con(ition becomes tr&e' 5heir str&ct&re is more comple/ than a ,hile statement1s%

for 6)i 5 I$ )i <5 I??$ )i SS7 / print "We'Ce rea&2ed )i\n"$ 0 We'Ce rea&2ed I We'Ce rea&2ed > ... We'Ce rea&2ed I??
Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04) Slide 51

?for? loops
5his sets the initial 2al&e of the 2ariable% its 2al&e on the first pass thro&gh the loop' 5his sets the test that (etermines ,hen to e/it the loop% as long as this is tr&e, the loop ,ill be rer&n' 5his sets ho, the 2ariable ,ill be incremente( on each pass thro&gh the loop'

for 6)i 5 I$ )i <5 I??$ )i SS7 / print "We'Ce rea&2ed )i\n"$ 0 We'Ce rea&2ed I We'Ce rea&2ed > ... We'Ce rea&2ed I??
Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04) Slide 52

?foreac"? loops

Foreac" statements allo, &s to perform the same operations on e2ery element of an array or hash in series' 5hey temporarily assign the 2al&e of each element to a scalar that ,e can ,or3 ,ith'

forea&2 )grade 64grade"7 / if 6)grade < Q?7 / print "Failing grade!: )grade\n"$ )failBtally SS$ 0 0 print "We 2aCe )failBtally failing "tudent"!\n"$
Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04) Slide 53

'xiting t"e loop

;ometimes yo& ,ant to e/it the loop 2ia a metho( other than the stan(ar( one' ?e (o this &sing the statements next, redo, an( last' next means :s3ip o2er e2erything else in the bloc3, increment the co&nter, an( e2al&ate the con(itional again': redo means :s3ip o2er e2erything else in the bloc3 an( e2al&ate the con(itional again, ,itho&t incrementing the co&nter': last means :e/it the bloc3 an( ne2er come bac3':

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 54

'xiting t"e loop

6ere1s an e/ample that &ses both next an( last%

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

forea&2 )"tudent 64"tudent"7 / if 6)"tudent eT "<%EBU<(P+1<U<E"7 / la"t$ 0 el"if 6)"tudent eT "+il#er"7/ ne3t$ 0 el"e / )grade 5 C2e&:B(rade 6)"tudent7$ 0 print ")"tudent: )grade\n"$ 0
Slide 55

3I. 'xercises

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 56

'xercise *

6ere is a command line script that print :6ello, ,orl(K: ?in(o,s 2ersion<others may ,ant to &se single 4&otes)%

perl -e "print TT!Hello, World!\n!$"

8ote that insi(e the : :, ,e &se 44I I instea(= this is beca&se ,e can1t nest (o&ble94&otes' 5hese are e4&i2alent%

"2ello" 5 TT!2ello!

?rite a script on the comman( line that greets yo& instea( of the ,orl(' 5hen a(( some co(e so that it prints t,o messages on t,o lines'
Slide 57

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

'xercise +

6ere is a program to be ,ritten in a te/t file) that prints again on the screen ,hate2er yo& type' 0o(ify it so that it as3s for yo&r name an( greets yo& by name'

8ame% !all it 1greet'pl1'

!!u"r!#in!perl -w print "1ype "omet2ing: "$ )"omet2ing 5 <+1EP%>$ &2omp )"omet2ing$ print ")"omet2ing\n"$
5his is a terrible 2ariable name' !hange it to something more appropriateK
Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04) Slide 58

'xercise A

?rite a program that, gi2en the base form of a 2erb thro&gh ;5D*8), o&tp&ts the correct Ar(9 person sing&lar form'

8ame% !all it 1conC&gate'pl1' 8O5.% Don1t forget abo&t irreg&lar formsK 8O5.% Bo& can lea2e o&t all negati2e forms' 8O5.% Bo& can also ignore forms li3e :,atches:' ?e1ll (o those ones once ,e get to reg&lar e/pressions)

6*85% Bo& ,ill probably ,ant to &se the follo,ing things%

if

el"if

el"e

eT

.
Slide 59

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

3II. Bore stuff

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 60

Opening files

Perl ma3es it fairly easy to loa( (ata from files' 5o (o this ,e &se the open an( close f&nctions, an( the :angle9operator: C .' 6ere1s a simple e/ample%

)inputBfile 5 "#igoldfile.dat"$ open 6P%RG1, ")inputBfile"7$ w2ile 6)line 5 <P%RG1>7 / print ")line"$ 8ote that this prints to 0 ;5DO$5, or the screen' &lo"e 6P%RG17$

*8P$5 is ,hat1s 3no,n as a file"andle' *t1s a temporary name for a file' ;5D*8 is a filehan(le too'
Slide 61

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Creating files

?e can &se the same comman(s to o&tp&t to a file that the program creates'

)inputBfile 5 "#igoldfile.dat"$ )outputBfile 5 "output.t3t"$ open 6P%RG1, ")inputBfile"7$ open 6DG1RG1, ">)outputBfile"7$ w2ile 6)line 5 <P%RG1>7 / print DG1RG1 ")line"$ 0 5his . ma3es all the (ifference' *t means that this file is being &lo"e 6P%RG17$ ,ritten to, not rea( from' &lo"e 6DG1RG17$
Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04) Slide 62

$"e ?split? function

5he f&nction split enables &s to easily transform a scalar to an array, by splitting the scalar &p on spaces or another character'

)"enten&e 5 "+ue and P "plit up."$ 4word" 5 "plit6! !, )"enten&e7$ print ")word"*F-\n"$ 5hat1s a space' up.

?e can also split on commas, etc'

)li"t 5 "<enie, meenie, miney, moe"$ 4word" 5 "plit6!,!, )li"t7$ print ")word"*A-\n"$ moe
Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04) Slide 63

Counting elements in an array

?e often ,ant to 3no, ho, many elements are in an array' 5here are three ,ays to get this info'

5he f&nction scalar%

4people 5 6"Koe", "@arry", "Curly"7$ print "&alar64people7 . "\n"$ A

$se of :scalar conte/t:%

)&ount 5 4people$ print ")&ount\n"$ A

$se of 8), ,hich gi2es the last index of an array%

print ") people"$ > Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 64

Finding t"e lengt" of a string

5he f&nction lengt" can be &se( to fin( to length in characters of a scalar'

)"tring 5 "a#&defg2i9"$ )2ow#ig 5 lengt26)"tring7$ print ")2ow#ig\n"$ I?

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 65

$"e ?sort? function

Bo& can sort the elements of an array or the 3eys of a hash ,ith the f&nction sort' #$5% #y (efa&lt, it sorts both strings an( n&mbers alphabeticallyK

4array 5 6";etty", "Cat2y", "8##y"7$ 4array 5 "ort64array7$ print "4array\n"$ 8##y ;etty Cat2y

#&t ,atch o&t%

4array 5 6"A", "F?", ">F", "I??"7$ 4array 5 "ort64array7$ print "4array\n"$ I?? >F A F?
Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04) Slide 66

,orting array 1eys

+ 2ery common type of loop ma3es &se of the f&nctions sort an( 1eys' 5he latter yiel(s all the 3eys not the 2al&es) in an array'

."ign" 5 6"Fran:" 5> "Capri&orn", "8manda" 5> "+&orpio"7$ forea&2 )per"on 6"ort :ey" ."ign"7 / print ")per"on: )"ign"/)per"on0\n"$ 0 8manda: +&orpio Fran:: Capri&orn

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 67

Adding elements to arrays

5here are t,o ,ays of a((ing ne, elements to e/isting arrays' *f ,e 3no, the in(e/ ,e ,ant the element to ha2e, ,e can (o this%

4num#er" 5 6">I?", "F'?", "AAA"7$ )num#er"*A- 5 "LL?"$

*f ,e simply ,ant to a(( an element to the en( of an array, ,e can &se pus"%

pu"264num#er", "LL?"7$

*n either case, "n&mbers is no,%

>I? F'? AAA LL?


Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04) Slide 68

$a1ing elements out of arrays

5he re2erse of pus" is pop, ,hich ta3es remo2es the last element from the array%

4num#er" 5 6">I?", "F'?", "AAA"7$ )la"t 5 pop64num#er"7$ print ")la"t\n"$ AAA

8ote that this is (ifferent from saying

)la"t 5 )num#er"*>-$
beca&se this (oesn1t remo2e the element from the array' +fter pop, the array ,ill ha2e only 2 elementsK
Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04) Slide 69

$"at?s allD

Introduction to Perl Programming (presentation by Gregory Garretson, 12-06-04)

Slide 70

You might also like