Presentation is loading. Please wait.

Presentation is loading. Please wait.

Introduction to Perl Part I By: Cédric Notredame (Adapted from BT McInnes)

Similar presentations


Presentation on theme: "Introduction to Perl Part I By: Cédric Notredame (Adapted from BT McInnes)"— Presentation transcript:

1 Introduction to Perl Part I By: Cédric Notredame (Adapted from BT McInnes)

2 2 What is Perl? Perl is a Portable Scripting Language No compiling is needed. Runs on Windows, UNIX, LINUX and cygwin Fast and easy text processing capability Fast and easy file handling capability Written by Larry Wall “Perl is the language for getting your job done.” Too Slow For Number Crunching Ideal for Prototyping

3 3 How to Access Perl To install at home Perl Comes by Default on Linux, Cygwin, MacOSX www.perl.com Has rpm's for Linux www.perl.com www.activestate.com Has binaries for Windows www.activestate.com Latest Version is 5.8 To check if Perl is working and the version number % perl -v

4 4 Resources For Perl Books: Learning Perl By Larry Wall Published by O'Reilly Programming Perl By Larry Wall,Tom Christiansen and Jon Orwant Published by O'Reilly Web Site http://safari.oreilly.com Contains both Learning Perl and Programming Perl in ebook form

5 5 Web Sources for Perl Web www.perl.com www.perldoc.com www.perl.org www.perlmonks.org

6 6 The Basic Hello World Program which perl pico hello.pl Program: #! /…path…/perl -w print “Hello World!\n”; Save this as “hello.pl” Give it executable permissions chmod a+x hello.pl Run it as follows:./hello.pl

7 7 “Hello World” Observations “.pl” extension is optional but is commonly used The first line “#!/usr/local/bin/perl” tells UNIX where to find Perl “-w” switches on warning : not required but a really good idea

8 Variables and Their Content

9 9 Numerical Literals 6Integer 12.6Floating Point 1e10Scientific Notation 6.4E-33Scientific Notation 4_348_348Underscores instead of commas for long numbers

10 10 String Literals “There is more than one way to do it!” 'Just don't create a file called -rf.' “Beauty?\nWhat's that?\n” “” “Real programmers can write assembly in any language.”  Quotes from Larry Wall

11 11 Types of Variables Types of variables: Scalar variables : $a, $b, $c Array variables : @array Hash variables : %hash File handles : STDIN, STDOUT, STDERR Variables do not need to be declared Variable type (int, char,...) is decided at run time $a = 5; # now an integer $a = “perl”; # now a string

12 12 Operators on Scalar Variables Numeric and Logic Operators Typical : +, -, *, /, %, ++, --, +=, -=, *=, /=, ||, &&, ! ect … Not typical: ** for exponentiation String Operators Concatenation: “.” - similar to strcat $first_name = “Larry”; $last_name = “Wall”; $full_name = $first_name. “ “. $last_name;

13 13 Equality Operators for Strings Equality/ Inequality : eq and ne $language = “Perl”; if ($language == “Perl”)...# Wrong! if ($language eq “Perl”)...#Correct Use eq / ne rather than == / != for strings

14 14 Relational Operators for Strings Greater than Numeric : >String : gt Greater than or equal to Numeric : >=String : ge Less than Numeric : <String : lt Less than or equal to Numeric : <=String : le

15 15 String Functions Convert to upper case $name = uc($name); Convert only the first char to upper case $name = ucfirst($name); Convert to lower case $name = lc($name); Convert only the first char to lower case $name = lcfirst($name);

16 16 A String Example Program Convert to upper case $name = uc($name); Convert only the first char to upper case $name = ucfirst($name); Convert to lower case $name = lc($name); Convert only the first char to lower case $name = lcfirst($name); #!/usr/bin/perl $var1 = “larry”; $var2 = “moe”; $var3 = “shemp”; …… Output: Larry, MOE, sHEMP

17 17 A String Example Program #!/usr/local/bin/perl $var1 = “larry”; $var2 = “moe”; $var3 = “shemp”; print ucfirst($var1);# Prints 'Larry' print uc($var2);# Prints 'MOE' print lcfirst(uc($var3));# Prints 'sHEMP'

18 18 Variable Interpolation Perl looks for variables inside strings and replaces them with their value $stooge = “Larry” print “$stooge is one of the three stooges.\n”; Produces the output: Larry is one of the three stooges. This does not happen when you use single quotes print '$stooge is one of the three stooges.\n’; Produces the output: $stooge is one of the three stooges.\n

19 19 Character Interpolation List of character escapes that are recognized when using double quoted strings \nnewline \ttab \rcarriage return Common Example : print “Hello\n”; # prints Hello and then a return

20 20 Numbers and Strings are Interchangeable If a scalar variable looks like a number and Perl needs a number, it will use it as a number $a = 4;# a number print $a + 18;# prints 22 $b = “50”;# looks like a string, but... print $b – 10; # will print 40!

21 Control Structures: Loops and Conditions

22 22 If... else... statements if ( $weather eq “Rain” ) { print “Umbrella!\n”; } elsif ( $weather eq “Sun” ) { print “Sunglasses!\n”; } else { print “Anti Radiation Armor!\n”; }

23 23 Unless... else Statements Unless Statements are the opposite of if... else statements. unless ($weather eq “Rain”) { print “Dress as you wish!\n”; } else { print “Umbrella!\n”; } And again remember the braces are required!

24 24 While Loop Example : $i = 0; while ( $i <= 1000 ) { print “$i\n”; $i++; }

25 25 Until Loop The until function evaluates an expression repeatedly until a specific condition is met. Example: $i = 0; until ($i == 1000) { print “$i\n”; $i++; }

26 26 For Loops Syntax 1: for ( $i = 0; $i <= 1000; $i=$i+2 ) { print “$i\n”; } Syntax 2: for $i(0..1000) { print “$i\n”; }

27 27 Moving around in a Loop next: ignore the current iteration last: terminates the loop. What is the output for the following code snippet: for ( $i = 0; $i < 10; $i++) { if ($i == 1 || $i == 3) { next; } elsif($i == 5) { last; } else {print “$i\n”;} }

28 Answer 024024

29 29 Exercise Use a loop structure and code a program that produces the following output: A AA AAA AAAB AAABA AAABAA AAABAAA AAABAAAB ….. TIP: $chain = $chain. “A”;

30 30 Exercise #! /usr/bin/perl for ($i=0, $j=0; $i<100; $i++) { if ( $j==3){$chain.=“B”;$j=0;} else {$chain.=“A”; $j++;} print “$chain\n”; }

31 31 Exercise: Generating a Random Sample A study yields an outcome between 0 and 100 for every patient. You want to generate an artificial random study for 100 patients: Patient 1 99 Patient 2 65 Patient 3 89 …. Tip: - use the srand to seed the random number generator -use rand 100 to generate values between 0 and 100 : rand 100

32 32 Exercise for ($i=0; $i<100; $i++) { $v=rand 100; #print “Patient $i $v\n”; printf “Patient %d %.2f\n\n”, $i, $v; #%s : chaines, strings #%d : integer #%f : floating points }

33 Collections Of Variables: Arrays

34 34 Arrays Array variable is denoted by the @ symbol @array = ( “Larry”, “Curly”, “Moe” ); To access the whole array, use the whole array print @array; # prints : Larry Curly Moe Notice that you do not need to loop through the whole array to print it – Perl does this for you

35 35 Arrays cont… Array Indexes start at 0 !!!!! To access one element of the array : use $ Why? Because every element in the array is scalar print “$array[0]\n”; # prints : Larry Question: What happens if we access $array[3] ? Answer1 : Value is set to 0 in Perl Answer2: Anything in C!!!!!

36 36 Arrays cont... To find the index of the last element in the array print $#array; # prints 2 in the previous # example Note another way to find the number of elements in the array: $array_size = @array; $array_size now has 3 in the above example because there are 3 elements in the array

37 37 Sorting Arrays Perl has a built in sort function Two ways to sort: Default : sorts in a standard string comparisons order sort LIST Usersub: create your own subroutine that returns an integer less than, equal to or greater than 0 Sort USERSUB LIST The and cmp operators make creating sorting subroutines very easy

38 38 Numerical Sorting Example #!/usr/local/bin/perl -w @unsortedArray = (3, 10, 76, 23, 1, 54); @sortedArray = sort numeric @unsortedArray; print “@unsortedArray\n”; # prints 3 10 76 23 1 54 print “@sortedArray\n”; # prints 1 3 10 23 54 76 sub numeric { return $a $b; } # Numbers: $a $b : -1 if $a $b # Strings: $a cpm $b : -1 if $a $b

39 39 #!/usr/local/bin/perl -w @unsortedArray = (“Larry”, “Curly”, “moe”); @sortedArray = sort { lc($a) cmp lc($b)} @unsortedArray; print “@unsortedArray\n”; # prints Larry Curly moe print “@sortedArray\n”; # prints Curly Larry moe String Sorting Example

40 40 Foreach Foreach allows you to iterate over an array Example: foreach $element (@array) { print “$element\n”; } This is similar to : for ($i = 0; $i <= $#array; $i++) { print “$array[$i]\n”; }

41 41 Sorting with Foreach The sort function sorts the array and returns the list in sorted order. Example : @array( “Larry”, “Curly”, “Moe”); foreach $element (sort @array) { print “$element ”; } Prints the elements in sorted order: Curly Larry Moe

42 42 Exercise: Sorting According to Multiple Criterion Use the following initialization to sort individuals by age and then by income: Syntax @sortedArray = sort numeric @unsortedArray; sub numeric { return $a $b; } Data @index=(0,1,2,3,4); @name=(“V”,“W”,”X”,”Y”,”Z”); @age=(10,20, 15, 20, 10); @income=(100,670, 280,800,400); Output: Name X Age A Income I … Tip: -Sort the index, using information contained in the other arrays.

43 43 Exercise: Sorting According to Multiple Criterion @index=(0,1,2,3,4,5); @name=(“V”,“W”,”X”,”Y”,”Z”); @age=(10,20, 15, 20, 10); @income=(100,670, 280,800,400); foreach $i ( sort my_numeric @index) { print “$name[$i] $age[$i] $income[$i]; } sub my_numeric { if ($age[$a] == $age[$b]) {return $income[$a] $income[$b]; } else {return $age[$a] $age[$b]; } }

44 Manipulating Arrays

45 45 Strings to Arrays : split Split a string into words and put into an array @array = split( /;/, “Larry;Curly;Moe” ); @array= (“Larry”, “Curly”, “Moe”); # creates the same array as we saw previously Split into characters @stooge = split( //, “curly” ); # array @stooge has 5 elements: c, u, r, l, y

46 46 Split cont.. Split on any character @array = split( /:/, “10:20:30:40”); # array has 4 elements : 10, 20, 30, 40 Split on Multiple White Space @array = split(/\s+/, “this is a test”; # array has 4 elements : this, is, a, test More on ‘\s+’ later

47 47 Arrays to Strings Array to space separated string @array = (“Larry”, “Curly”, “Moe”); $string = join( “;“, @array); # string = “Larry;Curly;Moe” Array of characters to string @stooge = (“c”, “u”, “r”, “l”, “y”); $string = join( “”, @stooge ); # string = “curly”

48 48 Joining Arrays cont… Join with any character you want @array = ( “10”, “20”, “30”, “40” ); $string = join( “:”, @array); # string = “10:20:30:40” Join with multiple characters @array = “10”, “20”, “30”, “40”); $string = join(“->”, @array); # string = “10->20->30->40”

49 49 Arrays as Stacks and Lists To append to the end of an array : @array = ( “Larry”, “Curly”, “Moe” ); push (@array, “Shemp” ); print $array[3]; # prints “Shemp” To remove the last element of the array (LIFO) $elment = pop @array; print $element; # prints “Shemp” @array now has the original elements (“Larry”, “Curly”, “Moe”)

50 50 Arrays as Stacks and Lists To prepend to the beginning of an array @array = ( “Larry”, “Curly”, “Moe” ); unshift @array, “Shemp”; print $array[3]; # prints “Moe” print “$array[0];# prints “Shemp” To remove the first element of the array $element = shift @array; print $element; # prints “Shemp” The array now contains only : “Larry”, “Curly”, “Moe”

51 51 Exercise: Spliting Instructions Remove shift: beginning, pop: end Add Unshift: beginning, push: end Use split, shift and push to turn the following string: “The enquiry 1 was administered to five couples” “The enquiry 2 was administered to six couples” “The enquiry 3 was administered to eigh couples” Into “five couples were administered the enquiry 1” ….

52 52 Exercise: Spliting Use split, shift and push to turn the following string: $s[0]=“The enquiry 1 was administered to five couples”; $s[1]=“The enquiry 2 was administered to six couples”; $s[2]=“The enquiry 3 was administered to eigh couples”; foreach $s(@s) { @s2=split (/was administered to/, $s); $new_s=“$s2[1] were admimistered $s2[0]”; print “$new_s\n”; }

53 Multidimentional Arrays

54 54 Multi Dimensional Arrays Better use Hash tables (cf later) If you need to: @tab=([‘Monday’,’Tuesday’], [‘Morning’,’Afternoon’,’Evening’]); $a=$tab[0][0] # $a == ‘Monday’ $tab2=(‘midnight’, ‘Twelve’); $tab[2]=\@tab2 # integrate tab2 as the last row of tab

55 Thank you


Download ppt "Introduction to Perl Part I By: Cédric Notredame (Adapted from BT McInnes)"

Similar presentations


Ads by Google