introduction to perl part i
Download
Skip this Video
Download Presentation
Introduction to Perl Part I

Loading in 2 Seconds...

play fullscreen
1 / 55

Introduction to Perl Part I - PowerPoint PPT Presentation


  • 94 Views
  • Uploaded on

Introduction to Perl Part I. By: Cédric Notredame (Adapted from BT McInnes). 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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Introduction to Perl Part I' - paul2


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
introduction to perl part i
Introduction to PerlPart I

By: Cédric Notredame

(Adapted from BT McInnes)

what is perl
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
how to access perl
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.activestate.com Has binaries for Windows
  • Latest Version is 5.8
    • To check if Perl is working and the version number
      • % perl -v
resources for perl
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
web sources for perl
Web Sources for Perl
  • Web
    • www.perl.com
    • www.perldoc.com
    • www.perl.org
    • www.perlmonks.org
the basic hello world program
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
hello world observations
“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
numerical literals
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 numbers
string literals
String Literals
  • 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
types of variables
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
operators on scalar variables
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;

equality operators for strings
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
relational operators for strings
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
string functions
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);
a string example program
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

a string example program1
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\'

variable interpolation
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

character interpolation
Character Interpolation
  • List of character escapes that are recognized when using double quoted strings
    • \n newline
    • \t tab
    • \r carriage return
  • Common Example :
    • print “Hello\n”; # prints Hello and then a return
numbers and strings are interchangeable
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!

if else statements
If ... else ... statements

if ( $weather eq “Rain” )

{

print “Umbrella!\n”;

}

elsif ( $weather eq “Sun” ) {

print “Sunglasses!\n”;

}

else {

print “Anti Radiation Armor!\n”;

}

unless else statements
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!
while loop
While Loop
  • Example :

$i = 0;

while ( $i <= 1000 ) {

print “$i\n”;

$i++;

}

until loop
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++;

}

for loops
For Loops
  • Syntax 1:
    • for ( $i = 0; $i <= 1000; $i=$i+2 ) {

print “$i\n”;

}

  • Syntax 2:
    • for $i(0..1000) {

print “$i\n”;

}

moving around in a loop
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”;}

}

exercise
Exercise
  • Use a loop structure and code a program that produces the following output:

AAAAAAAAAB

AAABA

AAABAA

AAABAAA

AAABAAAB

…..

TIP: $chain = $chain . “A”;

exercise1
Exercise

#! /usr/bin/perlfor ($i=0, $j=0; $i<100; $i++)

{

if ( $j==3){$chain.=“B”;$j=0;}

else {$chain.=“A”; $j++;}

print “$chain\n”;

}

exercise generating a random sample
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

exercise2
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

}

arrays
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
arrays cont
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!!!!!
arrays cont1
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
sorting arrays
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
numerical sorting example
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 , 0 if $a== $b, 1 if $a>$b

# Strings: $a cpm $b : -1 if $a<$b , 0 if $a== $b, 1 if $a>$b

slide39

String Sorting Example

#!/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

foreach
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”;

}

sorting with foreach
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

exercise sorting according to multiple criterion
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.

exercise sorting according to multiple criterion1
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]; }

}

strings to arrays split
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

split cont
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
arrays to strings
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”

joining arrays cont
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”

arrays as stacks and lists
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”)

arrays as stacks and lists1
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”
exercise spliting
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”….
exercise spliting1
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”;

}

multi dimensional arrays
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

ad