Introduction to PerlPart I           By: Amit Kr. Sinha    Nex-G Exuberant Solutions Pvt. Ltd.
What is Perl?   Perl is a Portable Scripting Language      No compiling is needed.      Runs on Windows, UNIX, LINUX an...
How to Access Perl To install at home    Perl Comes by Default on Linux, Cygwin, MacOSX    www.perl.com Has rpms for Li...
Resources For Perl Books:     Learning Perl          By Larry Wall          Published by OReilly     Programming Perl...
Web Sources for Perl Web    www.perl.com    www.perldoc.com    www.perl.org    www.perlmonks.org November 22, 2012
The Basic Hello World Program which perl pico hello.pl Program:    #! /…path…/perl -w    print “Hello World!n”; Save t...
“Hello World” Observations   “.pl” extension is optional but is commonly used   The first line “#!/usr/local/bin/perl” t...
Variables and Their Content
Numerical Literals  Numerical Literals         6               Integer         12.6            Floating Point         ...
String Literals String Literals    “There is more than one way to do it!”    Just dont create a file called -rf.    “B...
Types of Variables Types of variables:    Scalar variables : $a, $b, $c    Array variables : @array    Hash variables ...
Operators on Scalar Variables  Numeric and Logic Operators     Typical : +, -, *, /, %, ++, --, +=, -=, *=, /=, ||, &&, ...
Equality Operators for Strings Equality/ Inequality : eq and ne    $language = “Perl”;    if ($language == “Perl”) ... # ...
Relational Operators for Strings Greater than       Numeric : >          String : gt Greater than or equal to       Nu...
String Functions Convert to upper case          $name = uc($name); Convert only the first char to upper case          ...
A String Example Program Convert to upper case    $name = uc($name); Convert only the first char to upper case    $nam...
A String Example Program #!/usr/local/bin/perl $var1 = “larry”; $var2 = “moe”; $var3 = “shemp”; print ucfirst($var1);     ...
Variable Interpolation Perl looks for variables inside strings and replaces  them with their value           $stooge = “L...
Character Interpolation List of character escapes that are recognized     when using double quoted strings          n   ...
Numbers and Strings are    Interchangeable If a scalar variable looks like a number and Perl  needs a number, it will use...
Control Structures: Loops and Conditions
If ... else ... statements  if ( $weather eq “Rain” )     {      print “Umbrella!n”;     }  elsif ( $weather eq “Sun” ) { ...
Unless ... else Statements Unless Statements are the opposite of if ... else  statements.   unless ($weather eq “Rain”) {...
While Loop Example :   $i = 0;   while ( $i <= 1000 )      {      print “$in”;      $i++;   }  November 22, 2012
Until Loop The until function evaluates an expression  repeatedly until a specific condition is met. Example:         $i...
For Loops     Syntax 1:        for ( $i = 0; $i <= 1000; $i=$i+2 )         {            print “$in”;         }     Synt...
Moving around in a Loop next: ignore the current iteration last: terminates the loop. What is the output for the follow...
Answer         0         2         4
Exercise Use a loop structure and code a program that  produces the following output:        A        AA        AAA      ...
Exercise #! /usr/bin/perl      for ($i=0, $j=0; $i<100; $i++)          {             if ( $j==3){$chain.=“B”;$j=0;}       ...
Exercise: Generating a Random   Sample A study yields an outcome between 0 and 100  for every patient. You want to genera...
Exercise for ($i=0; $i<100; $i++)   {   $v=rand 100;   #print “Patient $i $vn”;   printf “Patient %d %.2fnn”, $i, $v;   #%...
Collections Of Variables: Arrays
Arrays Array variable is denoted by the @ symbol   @array = ( “Larry”, “Curly”, “Moe” ); To access the whole array, use...
Arrays cont… Array Indexes start at 0 !!!!! To access one element of the array : use $    Why? Because every element in...
Arrays cont ... To find the index of the last element in the   array     print $#array; # prints 2 in the previous       ...
Sorting Arrays Perl has a built in sort function Two ways to sort:       Default : sorts in a standard string compariso...
Numerical Sorting Example#!/usr/local/bin/perl -w@unsortedArray = (3, 10, 76, 23, 1, 54);@sortedArray = sort numeric @unso...
String Sorting Example #!/usr/local/bin/perl -w @unsortedArray = (“Larry”, “Curly”, “moe”); @sortedArray = sort { lc($a) c...
Foreach Foreach allows you to iterate over an array Example:   foreach $element (@array)   {     print “$elementn”;   }...
Sorting with Foreach The sort function sorts the array and returns the list in  sorted order. Example :                 ...
Exercise: Sorting According to      Multiple Criterion   Use the following initialization to sort individuals by age and ...
Exercise: Sorting According to      Multiple Criterion    @index=(0,1,2,3,4,5);    @name=(“V”,“W”,”X”,”Y”,”Z”);    @age=(...
Manipulating Arrays
Strings to Arrays : split Split a string into words and put into an array   @array = split( /;/, “Larry;Curly;Moe” );   @...
Split cont.. Split on any character   @array = split( /:/, “10:20:30:40”);   # array has 4 elements : 10, 20, 30, 40 Spl...
Arrays to Strings Array to space separated string   @array = (“Larry”, “Curly”, “Moe”);   $string = join( “;“, @array);  ...
Joining Arrays cont… Join with any character you want   @array = ( “10”, “20”, “30”, “40” );   $string = join( “:”, @arra...
Arrays as Stacks and Lists To append to the end of an array :   @array = ( “Larry”, “Curly”, “Moe” );   push (@array, “Sh...
Arrays as Stacks and Lists To prepend to the beginning of an array   @array = ( “Larry”, “Curly”, “Moe” );   unshift @arr...
Exercise: Spliting Instructions    Remove             shift: beginning, pop: end       Add             Unshift: begin...
Exercise: Spliting Use split, shift and push to turn the following string:  $s[0]= “The enquiry 1 was administered to fiv...
Multidimentional Arrays
Multi Dimensional Arrays Better use Hash tables (cf later) If you need to:       @tab=([‘Monday’,’Tuesday’],           ...
Thank you 
Upcoming SlideShare
Loading in …5
×

7.1.intro perl

623 views

Published on

Published in: Career
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
623
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

7.1.intro perl

  1. 1. Introduction to PerlPart I By: Amit Kr. Sinha Nex-G Exuberant Solutions Pvt. Ltd.
  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 PrototypingNovember 22, 2012
  3. 3. How to Access Perl To install at home  Perl Comes by Default on Linux, Cygwin, MacOSX  www.perl.com Has rpms for Linux  www.activestate.com Has binaries for Windows Latest Version is 5.8  To check if Perl is working and the version number  % perl -v November 22, 2012
  4. 4. Resources For Perl Books:  Learning Perl  By Larry Wall  Published by OReilly  Programming Perl  By Larry Wall,Tom Christiansen and Jon Orwant  Published by OReilly Web Site  http://safari.oreilly.com  Contains both Learning Perl and Programming Perl in ebook form November 22, 2012
  5. 5. Web Sources for Perl Web  www.perl.com  www.perldoc.com  www.perl.org  www.perlmonks.org November 22, 2012
  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 November 22, 2012
  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 ideaNovember 22, 2012
  8. 8. Variables and Their Content
  9. 9. Numerical Literals  Numerical Literals  6 Integer  12.6 Floating Point  1e10 Scientific Notation  6.4E-33 Scientific Notation  4_348_348 Underscores instead of commas for long numbersNovember 22, 2012
  10. 10. String Literals String Literals  “There is more than one way to do it!”  Just dont create a file called -rf.  “Beauty?nWhats that?n”  “”  “Real programmers can write assembly in any language.”  Quotes from Larry Wall November 22, 2012
  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 November 22, 2012
  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;November 22, 2012
  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 November 22, 2012
  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 November 22, 2012
  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);November 22, 2012
  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 November 22, 2012
  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 sHEMPNovember 22, 2012
  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 November 22, 2012
  19. 19. Character Interpolation List of character escapes that are recognized when using double quoted strings  n newline  t tab  r carriage return Common Example :  print “Hellon”; # prints Hello and then a returnNovember 22, 2012
  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! November 22, 2012
  21. 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”; }November 22, 2012
  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! November 22, 2012
  24. 24. While Loop Example : $i = 0; while ( $i <= 1000 ) { print “$in”; $i++; } November 22, 2012
  25. 25. Until Loop The until function evaluates an expression repeatedly until a specific condition is met. Example: $i = 0; until ($i == 1000) { print “$in”; $i++; } November 22, 2012
  26. 26. For Loops  Syntax 1:  for ( $i = 0; $i <= 1000; $i=$i+2 ) { print “$in”; }  Syntax 2:  for $i(0..1000) { print “$in”; }November 22, 2012
  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 “$in”;} } November 22, 2012
  28. 28. Answer 0 2 4
  29. 29. Exercise Use a loop structure and code a program that produces the following output: A AA AAA AAAB AAABA AAABAA AAABAAA AAABAAAB ….. November 22, 2012 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 “$chainn”; }November 22, 2012
  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 : November 22, 2012 rand 100
  32. 32. Exercise for ($i=0; $i<100; $i++) { $v=rand 100; #print “Patient $i $vn”; printf “Patient %d %.2fnn”, $i, $v; #%s : chaines, strings #%d : integer #%f : floating points }November 22, 2012
  33. 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 November 22, 2012
  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] ? November 22, 2012 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 November 22, 2012
  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 November 22, 2012
  38. 38. Numerical Sorting Example#!/usr/local/bin/perl -w@unsortedArray = (3, 10, 76, 23, 1, 54);@sortedArray = sort numeric @unsortedArray;print “@unsortedArrayn”; # prints 3 10 76 23 1 54print “@sortedArrayn”; # prints 1 3 10 23 54 76sub numeric { return $a <=> $b; }# Numbers: $a <=> $b : -1 if $a<$b , 0 if $a== $b, 1 if $a>$b# Strings: $a cpm $b : -1 if $a<$b , 0 if $a== $b, 1 if $a>$bNovember 22, 2012
  39. 39. String Sorting Example #!/usr/local/bin/perl -w @unsortedArray = (“Larry”, “Curly”, “moe”); @sortedArray = sort { lc($a) cmp lc($b)} @unsortedArray; print “@unsortedArrayn”; # prints Larry Curly moe print “@sortedArrayn”; # prints Curly Larry moe November 22, 2012
  40. 40. Foreach Foreach allows you to iterate over an array Example: foreach $element (@array) { print “$elementn”; } This is similar to : for ($i = 0; $i <= $#array; $i++) { print “$array[$i]n”; } November 22, 2012
  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 November 22, 2012
  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: November 22, 2012 -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]; } } November 22, 2012
  44. 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 November 22, 2012
  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+’ laterNovember 22, 2012
  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”November 22, 2012
  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”November 22, 2012
  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”)November 22, 2012
  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 : November 22, 2012  “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” …. November 22, 2012
  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_sn”; } November 22, 2012
  53. 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 tabNovember 22, 2012
  55. 55. Thank you 

×