Introduction to Perl. What is Perl Perl is an interpreted language. This means you run it through an...

Preview:

Citation preview

Introduction to Perl

What is PerlPerl is an interpreted language. This means

you run it through an interpreter, not a compiler.

Similar to shell script but lot easier and more powerful.

Perl is free to download and is also available for Windows and Macintosh.

File name extension .pl

The first line of a perl program should tell where to find the perl intepreter

#!/usr/bin/perl

Steps to Run a Perl ProgramUse your favorite editor to create a Perl

program, say test.pl.Change the file permission and make it

executable.chmod 700 test.pl

Run Perl programtest.pl

CommentsThe pound sign "#" is the symbol for

comment entry.Exception: First line, #!/usr/bin/perl, tells

where to find the Perl compiler on your system

VariablesThree types of variables.

ScalarArrayHash

Scalars

Scalar means single valueIn C/C++, many different kinds of single

values:int, float, double, char, bool

In Perl, Scalar variable can hold all these types, and more, such as string.

In Perl, we do not need to declare the data type of variables

ScalarsAll Scalar variables begin with a $Examples: $foo, $a, $zebra1, $F87

Scalar AssignmentsScalars hold any data type:$foo = 3;$d = 4.43;$temp = ‘Z’; #could be double quote$My_String = “Hello, I’m Paul.” # could be

single quote$value = TRUE;

Arithmetic in Perl

9

$a = 1 + 2; # Addition$b = 3 - 4; # Subtraction$c = $a * $b; # Multiplication$d = $a / $b; # Division$a = 9 ** 10; # Exponentiation$b = 5 % 2; # Modulo

Single and double quotes

10

$a = 'apples'; # you can also use double quote $b = 'bananas'; # you can also use double

quote

print '$a and $b';display: $a and $bprint "$a and $b";display: apples and bananas

Single quotation marks do not interpret, and double quotation marks do

ArraysConcept is the same as in C/C++

Groups of other valuesmuch more dynamic than C/C++

no declaration of size, typecan hold any kinds of value, and multiple

kinds of valuesAll array variables start with the @

character@array, @foo, @My_Array, @temp34

Array index stars from 0

Array Operations@a1 = (3, 2, 1, 4);@a2 = (34, ‘z’, “Hi”, 43.2);Assignment

$a2[2] = ‘X’; #@a2: (34, ‘z’, ‘X’, 43.2)Copy array

@a3 = @a1; #@a3: (3, 2, 1, 4);Merge array:

@a5 = (@a1, @a2); #@a5: (3, 2, 1, 4, 34, ‘z’, “Hi”, 43.2)

How about this operation:@a1 = (@a1, @a2); #@a1: (3, 2, 1, 4, 34, ‘z’,

“Hi”, 43.2)

Sort Array@a1 = (3, 2, 1, 4);Sort array

@a4 = sort (@a1) #@a4: (1, 2, 3, 4)How about this one?

@a1 = (3, 22, 11, 4);@a4 = sort (@a1) #@a4: (11, 22, 3, 4)This is same as

@a4 = sort {$a cmp $b }(@a1);Array is sorted alphabetically (elements are

considered as string)

Sort Array (continued)Sorted alphabetically

@a1 = (3, 22, 11, 4);@a4 = sort (@a1) ;

#or @a4 = sort {$a cmp $b }(@a1);#@a4: (11, 22, 3, 4)

Sort numerically@a1 = (3, 22, 111, 4);

@a4 = sort {$a <=> $b }(@a1); #@a4: (3, 4, 11, 22)

Note:Inside sort block, two variables must be $a and

$bIf $a and $b is exchanged, the sorting order is

changed

More about arraysspecial variable for each array:

@foo = (3, 25, 43, 31);$#foo (a variable: last index of @foo,

which is 3).$#foo+1 (size of array @foo, which is 4).

Program Flow: if statementif ($x == $y) { #...}elsif ($x == ($y+1)){ #...}else { #...}

Program Flow: Comparing variables

Numbers==!=<>

Stringseqneltgt

Program Flow: Logical operators

&& (logical and) || (or) ! (negation)

Program Flow (Loops)

for ($t = 0; $t < 100; $t++){ #...}

while ($x == $y) { #...}

foreach StatementThis statement takes an array variable

and assigns one item at a time to a scalar variable, executing a block of code.

For example, @list an arrayforeach $var (@list){#

}

Basic IOOutput to terminal

The print statement.Example:print “My name is $name\n”;

Input from keyboardThe <> operatorExample:$input = <>;read one line from keyboard, and save in variable

$input

Task 1Write a Perl program to ask the user to enter a

name, then it will display

Hello name_user_rntered

Perl Program for Task 1

#!/usr/bin/perl

print "Enter your name:";

$name = <>;print "Hello $name\n";

ChompWhen reading in, carriage return (“\n”) is

included.Usually don’t want that. chomp will take off the last character of a

string, if it is a “\n”.chomp ($foo);

Perl Program for Task 1 (revised)

#!/usr/bin/perl

print "Enter your name:";

$name = <>;chomp($name);print "Hello $name\n";

Read / Write to FilesTo read and write to files we should create

something called handles which refer to the files.

Read from FilesTo create a file handle for reading

Use the OPEN commandExample

open(filehandle1,"filename1");

Read from Files (continued)Once the file handles have been

obtained, we can read data (line by line) from the file.

Example: @lines = <filehandle1>; This will result in each line being read from the file pointed by the file handle and all lines are stored in the array variable @lines, where index 0 ($lines[0]) contains first line of the file, index 1 ($lines[1]) contains second line of the file, and so on.

Read from Files (continued)After read file, we should close the

file.close(filehandle1);

Task 2Write a Perl program that can read a file

(test.cpp) and display each line with a line number

Perl program for Task 2#!/usr/bin/perl

open(fh1, "test.cpp");@input_lines=<fh1>;chomp(@input_lines);close(fh1);

$i=1;foreach $line(@input_lines){

print "$i: $line\n";$i=$i+1;

}

Write to FilesTo create a file handle for writing

Use the OPEN commandExample

open(filehandle2, ">filename2");

Write to Files (continued)Once the file handles have been

obtained, we can write data to the file.

Example: print filehandle2 "$linevalue";

This will result in the value of $linevalue being written to the file pointed by the filehandle2.

Write to Files (continued)After write to file, we should close

the file.close(filehandle2);

Task 3Rewrite the Perl program for Task 2 so that

the result will be write to a file (test_c.cpp) instead of displaying on the screen.

Perl program for Task 3#!/usr/bin/perl

open(fh1, "test.cpp");@input_lines=<fh1>;chomp(@input_lines);close(fh1);

$i=1;open(fh2, ">test_c.cpp");foreach $line(@input_lines){

print fh2 "$i: $line\n";$i=$i+1;

}close(fh2);

Subroutines (functions)To define your own subroutine, use the

keyword sub

Can be defined anywhere in your program

sub function_name{

#commands}

Function Calls$Name = getname(); #return a valuegetname(); #not returning

a value

Parameters of FunctionsParameters are passed in a function as an

array.The parameter is taken in as an array which

is denoted by @_ inside the function. So if you pass only one parameter the size of

array @_ will be one. If you pass two parameters then the @_ size will be two and the two parameters can be accessed by $_[0],$_[1] , and so on.

Subroutines#!/usr/bin/perl

$result = max(11, 12);Print “The largest number is: $result \n”;

sub max {if($_[0] > $_[1]) {

return $_[0];}else {

return $_[1]; }}

Output:The largest number is: 12

More About FunctionsThe variables declared in the main

program are by default global so they will continue to have their values in the function also.

Local variables are declared by putting my key word while declaring the variable.

Subroutines: local variable example#!/usr/bin/perl

sub max

{

my @num = @_

if($num[0] > $num[1]){

return $num[0];

}

else{

return $num[1];

}

}

$result = max(11, 12);Print “The largest number is: $result \n”;

A routine (user defined) to read web pagessub getweb{ my $url = $_[0];

require LWP::UserAgent;my $ua = LWP::UserAgent->new;$ua->timeout(10);$ua->env_proxy;my $response = $ua->get($url);

return $response->content; }

This routine takes one parameter (a web address) and returns the contents of a web page as one string

Task 4Display the html code of www.google.com

Perl program for task 4#!/usr/bin/perl

$google = getweb("http://www.google.com");print $google; #the entire page is saved as

one string

sub getweb{

my $url = $_[0];require LWP::UserAgent;my $ua = LWP::UserAgent->new;$ua->timeout(10);$ua->env_proxy;my $response = $ua->get($url);

return $response->content; }

Reading AssignmentTextbook: Chapter 11

Recommended