• Like
7.1.intro perl
Upcoming SlideShare
Loading in...5
×
Uploaded on

 

More in: Career
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
173
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Introduction to PerlPart I By: Amit Kr. Sinha Nex-G Exuberant Solutions Pvt. Ltd.
  • 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. 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. 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. Web Sources for Perl Web  www.perl.com  www.perldoc.com  www.perl.org  www.perlmonks.org November 22, 2012
  • 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. “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. Variables and Their Content
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Control Structures: Loops and Conditions
  • 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. 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. While Loop Example : $i = 0; while ( $i <= 1000 ) { print “$in”; $i++; } November 22, 2012
  • 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. 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. 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. Answer 0 2 4
  • 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. 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. 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. 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. Collections Of Variables: Arrays
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Manipulating Arrays
  • 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. 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. 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. 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. 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. 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. 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. 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. Multidimentional Arrays
  • 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. Thank you 