Introduction to perl part i
Download
1 / 55

Introduction to Perl Part I - PowerPoint PPT Presentation


  • 93 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”;}

    }


Answer
Answer

0

2

4


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 [email protected]\n”; # prints 3 10 76 23 1 54

print [email protected]\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


String Sorting Example

#!/usr/local/bin/perl -w

@unsortedArray = (“Larry”, “Curly”, “moe”);

@sortedArray = sort { lc($a) cmp lc($b)} @unsortedArray;

print [email protected]\n”; # prints Larry Curly moe

print [email protected]\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