7.1.intro perl
-
Upload
varun-chhangani -
Category
Career
-
view
283 -
download
0
Transcript of 7.1.intro perl
![Page 1: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/1.jpg)
Introduction to Perl
Part I
By: Amit Kr. Sinha
Nex-G Exuberant Solutions Pvt. Ltd.
![Page 2: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/2.jpg)
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
April 14, 2023
![Page 3: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/3.jpg)
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
April 14, 2023
![Page 4: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/4.jpg)
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
April 14, 2023
![Page 5: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/5.jpg)
Web Sources for Perl
Web www.perl.com www.perldoc.com www.perl.org www.perlmonks.org
April 14, 2023
![Page 6: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/6.jpg)
The Basic Hello World Program
which perl pico hello.pl Program:
#! /…path…/perl -wprint “Hello World!\n”;
Save this as “hello.pl” Give it executable permissions
chmod a+x hello.pl Run it as follows:
./hello.pl
April 14, 2023
![Page 7: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/7.jpg)
“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
April 14, 2023
![Page 8: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/8.jpg)
Variables and Their Content
![Page 9: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/9.jpg)
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
April 14, 2023
![Page 10: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/10.jpg)
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 WallApril 14, 2023
![Page 11: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/11.jpg)
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
April 14, 2023
![Page 12: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/12.jpg)
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;
April 14, 2023
![Page 13: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/13.jpg)
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
April 14, 2023
![Page 14: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/14.jpg)
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
April 14, 2023
![Page 15: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/15.jpg)
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);
April 14, 2023
![Page 16: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/16.jpg)
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
April 14, 2023
![Page 17: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/17.jpg)
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'
April 14, 2023
![Page 18: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/18.jpg)
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 quotesprint '$stooge is one of the three stooges.\n’;
Produces the output:$stooge is one of the three stooges.\n
April 14, 2023
![Page 19: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/19.jpg)
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
April 14, 2023
![Page 20: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/20.jpg)
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!
April 14, 2023
![Page 21: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/21.jpg)
Control Structures: Loops and Conditions
![Page 22: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/22.jpg)
If ... else ... statements
if ( $weather eq “Rain” )
{
print “Umbrella!\n”;
}
elsif ( $weather eq “Sun” ) {
print “Sunglasses!\n”;
}
else {
print “Anti Radiation Armor!\n”;
}
April 14, 2023
![Page 23: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/23.jpg)
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!April 14, 2023
![Page 24: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/24.jpg)
While Loop
Example :$i = 0;
while ( $i <= 1000 ) {
print “$i\n”;
$i++;
}
April 14, 2023
![Page 25: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/25.jpg)
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++;
}April 14, 2023
![Page 26: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/26.jpg)
For Loops
Syntax 1: for ( $i = 0; $i <= 1000; $i=$i+2 )
{ print “$i\n”; }
Syntax 2: for $i(0..1000)
{ print “$i\n”; }
April 14, 2023
![Page 27: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/27.jpg)
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”;}
}April 14, 2023
![Page 28: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/28.jpg)
Answer
0
2
4
![Page 29: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/29.jpg)
Exercise
Use a loop structure and code a program that produces the following output:
AAAAAAAAABAAABAAAABAAAAABAAAAAABAAAB
…..
TIP: $chain = $chain . “A”;April 14, 2023
![Page 30: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/30.jpg)
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”;
}
April 14, 2023
![Page 31: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/31.jpg)
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 99Patient 2 65Patient 3 89….
Tip:- use the srand to seed the random number generator
-use rand 100 to generate values between 0 and 100 :
rand 100April 14, 2023
![Page 32: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/32.jpg)
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
}
April 14, 2023
![Page 33: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/33.jpg)
Collections Of Variables: Arrays
![Page 34: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/34.jpg)
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
April 14, 2023
![Page 35: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/35.jpg)
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!!!!!
April 14, 2023
![Page 36: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/36.jpg)
Arrays cont ...
To find the index of the last element in the arrayprint $#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 arrayApril 14, 2023
![Page 37: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/37.jpg)
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
April 14, 2023
![Page 38: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/38.jpg)
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>$bApril 14, 2023
![Page 39: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/39.jpg)
#!/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
April 14, 2023
![Page 40: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/40.jpg)
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”;}
April 14, 2023
![Page 41: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/41.jpg)
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 MoeApril 14, 2023
![Page 42: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/42.jpg)
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.April 14, 2023
![Page 43: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/43.jpg)
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]; }
}April 14, 2023
![Page 44: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/44.jpg)
Manipulating Arrays
![Page 45: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/45.jpg)
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
April 14, 2023
![Page 46: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/46.jpg)
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
April 14, 2023
![Page 47: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/47.jpg)
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”
April 14, 2023
![Page 48: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/48.jpg)
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”
April 14, 2023
![Page 49: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/49.jpg)
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”)
April 14, 2023
![Page 50: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/50.jpg)
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”April 14, 2023
![Page 51: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/51.jpg)
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”
….April 14, 2023
![Page 52: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/52.jpg)
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”;
}
April 14, 2023
![Page 53: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/53.jpg)
Multidimentional Arrays
![Page 54: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/54.jpg)
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
April 14, 2023
![Page 55: 7.1.intro perl](https://reader031.fdocuments.us/reader031/viewer/2022013003/5591e5331a28ab1f4a8b4639/html5/thumbnails/55.jpg)
Thank you