169
Perl Intr o ductio n Sc alar Data Array Flo w Contr o l File I / O R e gular E x pr e s s io n Subroutine

Learn Perl Language

Embed Size (px)

Citation preview

Page 1: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 1/169

Perl

• Introduction

• Scalar Data

• Array

• Flow Control• File I/O

• Regular Expression• Subroutine

Page 2: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 2/169

INTRODUCTION

• PERL : Practical Extraction andReport Language

• First developed by Larry Wall … subsequently by PERL Community

• Although continuously evolving, current version is 5.005_03 ( Perl 5 )

• Supported by Unix, Windows, Macintosh and LINUX

• Freely available on Internet (www.perl.com)

• Open Source language - Source Code available on the Net!!!!

Page 3: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 3/169

• System Administration jobs

• Text/Document Processing

• Web programming

• Client-Server programming for Internet

• Database Interface(Oracle, Sybase, Informix, MySQL etc.)

• GUI programming on X Windows ( with Tk )

POPULAR PERL TASKS

Page 4: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 4/169

POPULAR PERL TASKS

• Text/Document Processing• Examples:

• Assembler Development --> perl utility takes

input file(assembly language) and produce binarycode(machine language).

• To convert a code from VHDL to Verilog.

Page 5: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 5/169

CHECKING PERL VERSION

  perl -v

Page 6: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 6/169

PERL OPTIONS

OPTION MEANING

  -v Displaying Perl version

  -e Execute perl code directly  -c Check syntax but do not execute

  -w Execute and show warning message

Page 7: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 7/169

RUN INTERACTIVE PERL

  $ perl -e ‘ print “hello world\n” ’

$ perl

  print “hello world\n”

d

Page 8: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 8/169

FIRST PERL SCRIPT

  $ perl first.pl  #!/usr/bin/perl

print “hello world\n” ;

Page 9: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 9/169

EXECUTE PERL SCRIPT

$ perl -c first.pl  Check first.pl syntax only

$ perl -w first.pl

  Execute and show warning message

Page 10: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 10/169

2 : SCALAR DATA• Scalar Data• Scalar Variable

• Scalar Operator• How to show output

• How to get input

Page 11: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 11/169

NUMBER LITERAL

• Integer ; Floating Point• Integer : 1 , -9000 , 2343

• Floating Point : 1.99 , -3.25e10 ,900E200

Page 12: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 12/169

Page 13: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 13/169

PRINT COMMAND

$ perlprint “hello world” ;

print “Welcome to Perl\n” ;print ‘Enjoy yourself \n’

Result:hello world W elcom e to Perl

Enjoy yourself\nved4:/ohm /users/… .

Page 14: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 14/169

ALTERNATIVE QUOTES

• Single quote can use q/……./• Double quote can use qq/……../

$ perl

print q/This is single quote/ ;

print qq/This is double quote\n/ ;D

Page 15: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 15/169

PERL ESCAPE

SEQUENCES

  ESCAPE SEQUENCE  MEANING  \n New line

  \t Horizontal tab

  \b Backspace  \a Alert (Bell)

  \cC Control C

  \e Escape

  \\ Backslash

  \” Double Quote

Page 16: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 16/169

Page 17: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 17/169

PRINT EXAMPLE

$ perlprint “\lFIRST LINE\n”; fIRST LINE

print “\LCOMPUTER\E \n” ; computer

print “\uthailand\n”;  Thailandprint “\Uindia is great\n”; INDIA IS GREAT

D

Page 18: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 18/169

SCALAR VARIABLE

• Scalar variable : $• examples:

$x$AveryLongVariableName

$day_in_month$year2000

Page 19: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 19/169

NUMERIC OPERATORS

  PRECEDENCE

**

* / %

+ -

Page 20: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 20/169

Page 21: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 21/169

ASSIGNMENT OPERATORSSYNTAX : variable = value ;

$ perl

$a = 10 ; # This is comment$b = 20 ;

$c = $a + $b ;

print “$c\n”; # Same as print $a + $b , “\n” ;

Page 22: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 22/169

BINARY ASSIGNMENT OPERATORS

SYNTAX : variable op= value

$ perl

$b = 100 ;

$a += 3 ;

$b *= $a ;print “$a\t$b\n”;

AUTOINCREMENT &

Page 23: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 23/169

AUTOINCREMENT &

AUTODECREMENT

SYNTAX : ++variable , variable++ ,

--variable , variable--

$ perl$a = 10 ; $b = 20 ;

++$a ; #$a has value 11

$c = $b++ ; #$c is 20 , $b is 21

--$c ; #$c is 19

Page 24: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 24/169

STRING OPERATOR• String Concatenation ( . )

“/etc” . “/” . “passwd” ==> “/etc/passwd”

$b = $c . “\n”

• String Repetition Operator ( x )

print “*” x 10 ;

print “<“ x 30 ;

Page 25: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 25/169

COMPARISON

OPERATORSNumeric String Meaning

== eq Equal

!= ne Not equal

< lt Less than

<= le Less than or equal to

> gt Greater than>= ge Greater than or equal to

Page 26: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 26/169

HOW TO GET INPUT  name1.pl

print “Enter your name : ” ;

$name = <STDIN> ;

print “Enter your surname : ”;

$surname = <STDIN> ;

print “Your name is $name and surname is$surname” ;

Page 27: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 27/169

CHOP() & CHOMP()• chop() remove the last character from the variable

$x = “espresso” ;

chop($x) ; # $x is now “espress”

• chomp() remove the end of record marker (“\n”) from thevariable

• chop($var = <STDIN>) ;chomp($var = <STDIN> ) ;

CHOP( ) & CHOMP( )

Page 28: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 28/169

CHOP( ) & CHOMP( )

EXAMPLE

name2.pl

  print “Enter your name : ” ;

$name = <STDIN> ; chop($name) ;

print “Enter your surname : ” ;

chomp($surname = <STDIN>);

print “Your name is $name and surname is$surname\n”;

Page 29: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 29/169

3 : ARRAY• Array Literal• Array Variable

• Element access on Array• Operations on Array

• Command line argument

Page 30: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 30/169

ARRAY LITERAL

array : ( value1, value 2, value 3 , … ,valuen )

or ( value 1 .. value n )

array :

( 1 , 2 , 3 , 4 , 5 ) or ( 1..5 )

(‘one’,’two’,’three’)

( $a , $b , $c )

( “Jan” , 1 , ”Feb” , 2 , “Mar” , 3)

Page 31: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 31/169

ARRAY VARIABLEArray Variable : @name

$ perl

@day =(“mon”,”tue”,”wed”,”thu”,”fri”,”sat”,”sun”) ;

print “@day\n”;

@x = (1..100) ;

print @x ;

Page 32: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 32/169

ARRAY ASSIGNMENT

 @a = (’a’..’z’) ;

($a,$b,$c) = ( 10 , 20 , 30 ) ; # $a=10, $b = 20 , $c = 30

@b = @a ; # copy array

$a = @a ; # $a get length of @a($a) = @a ; # $a get first element of @a

($x,$y) = ($y,$x) ; # Swap $x and $y

@z = () ; # Null list

Page 33: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 33/169

ARRAY ELEMENT ACCESS

$array[index] ; elementarray1.pl

@a = (‘red’ , ‘green’ , ‘blue’) ;

print “First element is $a[0] \n”;

print “Second element is $a[1] \n”;

print “third element is $a[2] \n”;print “Last index is $#a \n”; # Array

length = $#a + 1

Page 34: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 34/169

ARRAY SLICE

@array[list]slice.pl@a = ( ‘a’..’z’) ;print “@a[0,1,2] \n”; # The same as @a[0..2]print “@a[0..$#a] \n”; # The same as @a

@b = @a[0..10] ;print “@b\n”;

Page 35: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 35/169

OPERATIONS ON ARRAY

• push( ) and pop( )• shift( ) and unshift( )

• reverse( )

• sort( )

Page 36: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 36/169

PUSH( ) & POP( )push():

• Takes a scalar and an array name as parameters• It pushes the value of the scalar at the end of the array

• Syntax: push(@array,variable or array) ;

pop():

• Takes an array name as a parameter

• It returns the top or the last element of the array• It removes element permanently from the array

• Syntax: $variable = pop ( @array ) ;

Page 37: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 37/169

EXAMPLES$ perl

@a = (1..10) ;

push(@a,100) ;

print “@a\n”;

$ perl

@a = (1..10) ;

$y = pop ( @a ) ;

print “$y\n@a\n” ;

Page 38: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 38/169

PUSH( ) AND POP ( ) EXAMPLEpushpop.pl

@a = (1..10) ;

print “Enter your data to push : ” ;

chop($a = <STDIN>) ;

push(@a,$a) ; print “ Now \@a has value @a \n”;

$y = pop (@a) ;print “ \$y has value $y and \@a has value @a \n”;

Page 39: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 39/169

SHIFT( ) & UNSHIFT( )unshift():

• Takes a scalar and an array name as parameters

• It puts the value of the scalar at the beginning of the array

• Syntax: unshift(@array,variable or array) ;

shift():

• Takes an array name as a parameter• It returns the first element of the array

• It removes element permanently from the array

• Syntax: $variable = shift ( @array ) ;

Page 40: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 40/169

EXAMPLES$ perl

@a = ( 1..10 ) ;

$x = shift ( @a ) ;

print “$x\n@a\n” ;

$ perl

@a = ( 10..20 ) ; @b = ( 100..105 ) ;

unshift( @a, @b ) ;

print “@a\n”;

Page 41: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 41/169

SHIFT( ) & UNSHIFT( )

EXAMPLE

shift.pl

@a = (1..10) ; @b = (‘a’.. ‘z’) ;

unshift(@a,@b) ;print “Now \@a has value @a\n”;

$x = shift (@a) ;

print “\$x has value $x and \@a has value @a \n”;

Page 42: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 42/169

REVERSE( )Syntax: reverse(@array)

$ perl

@a = (‘a’.. ‘z’) ;

@b = reverse (@a) ; print “@b\n”;

@a = reverse (@a) ; print “@a\n”;

Page 43: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 43/169

SORT( )Syntax: sort(@array)

sort1.pl

@a = (‘batman’, ‘robin’, ‘batgirl’, ‘freeze’, ‘poison ivy’) ;

@b = sort (@a ) ; print “@b\n”;

@c = (1,2,3,10,15,25) ;

@d = sort (@c ) ; print “@c\n”;

Page 44: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 44/169

COMMAND LINE ARGUMENTSpecial array variable : @ARGV

 The script name : $0

arg.pl

print “The script name is $0 \n”;

print “All command line argument are @ARGV \n”;

Page 45: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 45/169

SIMPLE ECHO PROGRAM$ echo A B C D E F

A B C D E F

$ perl -e ‘ print “@ARGV\n” ’ A B C D E FA B C D E F

Page 46: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 46/169

READ INPUT AS ARRAY

  $a = <STDIN> ; scalar context

@a = <STDIN> ; list context

DETERMINE ARRAY

Page 47: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 47/169

DETERMINE ARRAY

LENGTH1. Use scalar( ) operator

Ex : @a = (‘one’,’two’,’three’) ;

print scalar( @a ) , “\n” ;

2. Use $#ArrayNamevariable ( last index )

Ex : @arr = (‘athena’ , ‘apollo’ , ‘hercules’ ) ;

print $#arr + 1 , “\n” ;

Page 48: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 48/169

4 : FLOW CONTROL• if & unless structure

• while & until & for structure

• foreach structure

• last & redo & next structure• Logical Operators

Page 49: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 49/169

 TRUE AND FALSE IN PERL• Any string is true except for "" and "0"

• Any number is true except 0

• Any reference is true

• Any undefined value is false

Page 50: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 50/169

 TRUE AND FALSE EXAMPLE

• 0 False

• 0.00 False

• “0.00”  True

• 10  True

• 23-23 False

Page 51: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 51/169

IF STRUCTURE

  if  ( condition) {  statement;

  }else {

  statement;  }

Page 52: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 52/169

CHECKING TRUE OR FALSE$ perl

print “Enter value : ” ;

chop($val = <STDIN> );

if ( $val ) {print “$val is true \n” ;

} else {

print “$val is false \n” ;

}

IF EXAMPLE

Page 53: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 53/169

IF EXAMPLEif1.pl

print “Enter your status : ” ;chop($status = <STDIN>) ;if ( $status eq “single”) {

print “Welcome to Bachelor group \n”;

}

else {print “Congratulations !!! you are so lucky

\n”; 

Page 54: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 54/169

UNLESS STRUCTURE  unless ( condition ) {

  statement

} else {  statement

}

Page 55: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 55/169

IF -ELSIF STRUCTURE

  if  ( condition ) {

  statement

}elsif  ( condition ) {  statement

}else{  statement

}

Page 56: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 56/169

WHILE AND UNTIL  while ( condition) {

….. repeat as long as true…………

}

  until ( condition) {

….. repeat as long as false………..

}

Page 57: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 57/169

WHILE EXAMPLEsum.pl

print “Enter number : ” ;

chop($n = <STDIN>) ;

$sum = 0 ;

while ($i <= $n) {

$sum += $i ; ++$i ;}

print “Sum from 1 to $n = $sum \n”;

Page 58: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 58/169

ECHO MESSAGEquit.pl

print “Enter your message : ” ;

chop($mesg = <STDIN> ) ;

until ( $mesg eq “quit” ) {

print “You entered $mesg \n”;

print “Enter your message : ” ;chop ($mesg = <STDIN> ) ;

}

FOR STRUCTURE

Page 59: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 59/169

for( initialization ; condition ; expression ) {……………………

}

Exam ple:$ perl

for ( $x = 0 ; $x <= 10 ; ++$x ) {

print “$x\n”;}

$ perl

for ( $y = 1 ; $y <= 100 ; $y += 1 ) {print “$y \n” ; print “********\n” ;

}

Page 60: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 60/169

Page 61: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 61/169

FOREACH STRUCTURE

  foreach  variable ( list ) {  statement

………….}

Page 62: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 62/169

FOREACH EXAMPLE1. foreach $x (1..10) { print “$x\n” ; }

2. foreach (1..10) { print “$_\n” ; }

3. for (1..10) { print ; print “\n” ; }

4. foreach ( reverse (1..10) ) { print ; }

Page 63: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 63/169

LISTING EVEN NUMBER$ perl

foreach $x (1..100) {

if ( ( $x % 2 ) == 0 ) {

print “$x\n”;}

}

Page 64: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 64/169

EXPRESSION MODIFIER• statement if  condition ;

• statement unless condition ;

• statement while condition ;

• statement until condition ;

Page 65: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 65/169

EXTRA FLOW CONTROLCOMMAND USAGE

goto  label Jump to named labellast Break out of innermost loop ( break in C )

last  label Break out of current loop at label

next Start next iteration of loop ( continue in C )next  label Start next iteration of loop at label

redo Restart loop without re-evaluating condition

redo  label Restart loop label without re-evaluatingcondition

Page 66: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 66/169

ECHO MESSAGE AGAINquit2.pl

print “Enter your message : ” ;chop( $mesg = <STDIN> ) ;

for( ; ; ) {

last if ( $mesg eq “quit” ) ;

print “You enter $mesg \n”;

print “Enter your message : ” ;chop( $mesg = <STDIN> );

}

Page 67: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 67/169

NEXT AND LAST EXAMPLE  LINE : while ($line = <STDIN>) {

last LINE if ( $line eq “\n”) ;

next LINE if ( $line eq “#\n” );

}

Page 68: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 68/169

LISTING EVEN NUMBER$ perl

foreach ( 1..100 ) {

next if ( $_ % 2 ) ;

print “$_ \n” ;}

Page 69: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 69/169

LOGICAL OPERATORSEXAMPLE MEANING

$a && $b True if both $a and $b are true

$a || $b True if both or either one is true

!$a True if $a is false$a and $b The same as $a && $b

$a or $b The same as $a || $bnot $a The same as !$a

Page 70: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 70/169

SHORT CIRCUIT OPERATOR1. if  ( condition) {

  statement ;

}

2. statement  if   condition ;

3. condition  &&  statement ;

4. condition  and  statement ;

Page 71: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 71/169

ARROW MESSAGEarrow.pl

$mesg = “TANSTAAFL” ;$num = 5 ;

for ( $k = 0 ; $k <= $num ; ++$k ) {

$blank = “ “ x $k ; print “\t$blank$mesg\n”;

}

for ( $k = $num - 1 ; $k >= 0 ; --$k ) {$blank = “ “ x $k ; print “\t$blank$mesg\n”;

}

 5 : FILE INPUT/OUTPUT

Page 72: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 72/169

/

• Angle <> Operator

• open( ) , close( ) and file handle

• File test operators

• File manipulation

• Directory manipulation

• Directory Handle

Page 73: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 73/169

GETTING INPUT FROM STDIN

1. while ($_ = <STDIN>) {

print $_ ;

}2. while (<STDIN>) { print ; }

3. print while (<STDIN>) ;

Page 74: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 74/169

ANGLE <> OPERATOR

<> get data from files in command line argument

or standard input (keyboard) .

“cat” in Perl

print while (<>) ;

Page 75: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 75/169

CAT WITH FILENAME$ perl

print “$ARGV : $_” while ( <> ) ;

Page 76: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 76/169

OPEN( ) AND FILE HANDLEopen(filehandle, filename) ;

COMMAND MEANING

open(FILE,”filename”) Open for readingopen(FILE,”<filename”) Open for reading

open(FILE,”>filename”) Create file andwrite to itopen(FILE,”>>filename”) Append to

existing file

Page 77: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 77/169

DEFAULT FILE HANDLE

NAME MEANING

STDIN Standard Input (keyboard)STDOUT Standard Output (terminal)

STDERR Standard Error (same as STDOUT)

Page 78: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 78/169

SIMPLE OPEN PROGRAM$ perl

open(PASSWD,“/etc/passwd”) ;print while ( <PASSWD> ) ;

$ perl

print “Enter filename :” ; chop($name = <STDIN>);

open(FILE,$name) ;

print while (<FILE> );

Page 79: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 79/169

ERROR CHECKING WITH DIE1. unless(open(FILE,”filename”)) {

print “Can not open file \n” ;} else { ……….. }

2. unless (open(FILE,”filename”)) {

die “Can not open file” ;

}3. open(FILE, “filename”) || die “Can not open file” ;

Page 80: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 80/169

CLOSE( )close(filehandle) ;

open(FILE,”filename”) or die “Can’t

read file “ ;while(<FILE>) {

……………….}

close(FILE) ;

Page 81: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 81/169

WRITING TO FILEprint  filehandle data

print “This is output \n” ;print STDOUT “This is output \n”;

print FILE “First line \n” ;

Page 82: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 82/169

SIMPLE WRITE PROGRAM$ perl

open(LOG,”>log”) or die “Can not create log file ”;print LOG “This message go to log file \n”;

close(LOG) ;

$ cat log

This message go to log file

Page 83: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 83/169

COPY FILE IN PERLcopy.pl

$source = $ARGV[0] ;$dest = “>“ . $ARGV[1] ;

open(INPUT,$source) or die “Can not read $source” ;

open(OUTPUT,$dest) or die “Can not create $dest” ;

while ( <INPUT> ) {

print OUTPUT $_ ;

}

close(INPUT) ; close(OUTPUT) ;

Page 84: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 84/169

FILE TEST OPERATOROPTION MEANING

-r File or directory is readable-w File or directory is writable

-x File or directory is executable

-e File or directory exists

-z File exists and has zero size

-s File exists and return size in byte

-f File is a plain file

-d File is a directory

Page 85: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 85/169

FILE TEST OPERATOR ( 2 )OPTION MEANING

-l File is a symbolic link-b File is a block special file

-c File is a character special file

-u File or directory is setuid

-g File or directory is setgid

-T File is text file

-B File is binary file

-M Modification age in days

Page 86: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 86/169

GETTING FILE SIZE$ perl

print “Enter file name : ” ;chop($name = <STDIN> );

if ( -f $name ) {

$size = -s $name ;

print “$name has size = $size \n”;

}

Page 87: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 87/169

FILE CHECKING EXAMPLEprint “Enter file name :” ; chop($name = <STDIN>) ;

print “$name is readable \n” if ( -r $name ) ;

print “$name is writable \n” if ( -w $name ) ;

print “$name is executable \n” if ( -x $name ) ;

if ( -f $name ) {

$size = -s $name ;

print “$name is file and has size = $size \n” ;

} elsif ( -d $name ) {

print “$name is directory \n”;

}

Page 88: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 88/169

6 : SUBROUTINE• Defining subroutine

• Global and local variable

• Passing and accessing parameter

• Recursive function• Sorting in Perl

DEFINING SUBROUTINE

Page 89: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 89/169

DEFINING SUBROUTINE

  sub  subname {

  statement 1;statement 2 ;

}  &subname;

SIMPLE EXAMPLE

Page 90: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 90/169

SIMPLE EXAMPLE$ perl

sub X {print “Subroutine example\n”;

}&X ;

SUBROUTINE EXAMPLE

Page 91: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 91/169

SUBROUTINE EXAMPLE

sub myfunc {print “Message in subroutine \n”;

}print “Before invoking subroutine \n” ;

&myfunc ;

print “After invoking subroutine \n”;

Page 92: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 92/169

FINDING SUM

Page 93: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 93/169

FINDING SUMsub mysum {

@number = (1..100) ;foreach (@data) {

$sum += $_ ;

}

$sum ;

}$total = &mysum ;

print “Total = $total \n” ;

GLOBAL VARIABLE

Page 94: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 94/169

GLOBAL VARIABLE$a = 100 ;

$b = 200 ;$sum = &add ;

print “$a plus $b = $sum \n”;

sub add {

$total = $a + $b ;

$total ;}

GLOBAL VARIABLE ( CONT )

Page 95: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 95/169

GLOBAL VARIABLE ( CONT. )$x = 100 ;

print “Before invoking : \$x = $x \n” ;&showvalue ;

print “After invoking : \$x = $x \n” ;

##################

sub showvalue {

$x = 999 ;print “In function : \$x = $x \n”;

}

LOCAL VARIABLE

Page 96: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 96/169

LOCAL VARIABLE$x = 100 ;

print “Before invoking : \$x = $x \n”;&showvalue ;

print “After invoking : \$x = $x \n”;

##########################sub showvalue {

  my ($x) = 999 ;

print “In function : \$x = $x \n” ;

}

SPECIAL ARRAY @

Page 97: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 97/169

SPECIAL ARRAY : @_ 

• All parameter passing to subroutine are in @_ array

• First parameter = $_[0] ,Second parameter = $_[1] , and so on

PASSING PARAMETER

Page 98: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 98/169

PASSING PARAMETER$value = &multiply(10,20) ;

print “ 10 multiply 20 = $value \n”;sub multiply {

my ($first) = $_[0] ;

my ($second) = $_[1] ;

#### or my($first,$second) = @_ ;

my ($product) = $first * $second ;$product ;

}

PASSING ARRAY PARAMETER

Page 99: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 99/169

PASSING ARRAY PARAMETER$sum = &add(1..100) ;

print “ Sum is $sum \n”;sub add {

local($sum) = 0;

foreach (@_) {

$sum += $_ ;

}$sum ;

}

FACTORIAL EXAMPLE

Page 100: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 100/169

FACTORIAL EXAMPLEfact.pl

if ( $ARGV[0] eq “ “) { die “Usage: $0 number \n”; }$sum = &fact($ARGV[0]) ;

print “ Factorial of $ARGV[0] = $sum \n”;

sub fact {my ( $sum ) = 1 ;

for ( $I = 1 ; $I <= $_[0] ; ++$I ) {

$sum *= $I ;}

}

RECURSIVE FACTORIAL

Page 101: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 101/169

RECURSIVE FACTORIALrefact.pl

die “Usage : $0 number \n” unless (@ARGV) ;$result = &fact($ARGV[0]) ;

print “Factorial of $ARGV[0] = $result \n”;

sub fact {my ($num) = @_ ;

if ( $num == 0 or $num == 1 ) { 1 ; }

else { $num * &fact( $num - 1) ; }

}

FIBONACCI NUMBER

Page 102: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 102/169

FIBONACCI NUMBERDefinition : F(0) = 0 ; F(1) = 1 ;

F(n) = F(n-1) + F(n-2) for n > 1sub Fib {

my ($num) = @_ ;

if ( $num == 0 ) { 0 ; }elsif ( $num == 1 ) { 1 ; }

else {

&Fib($num - 1) + &Fib($num - 2) ;

}

}

SORTING

Page 103: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 103/169

SORTING

• Ascending : ‘a’ , ‘b’ , ‘c’ , …. , 1 , 2 , 3 , …• Descending : ‘Z’ , ‘Y’ , ‘X’ , … , 10 , 9 , 8 , ...

SORTING IN PERL

Page 104: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 104/169

SORTING IN PERL1. @list = <> ;

@sortlist = sort @list ;print “@sortlist \n”;

2. @list = <> ;

print sort @list ;

3. perl -e ‘ print sort <> ; ’

ASCII SORT

Page 105: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 105/169

ASCII SORT

@data = (1,13,2,15,10,30) ;

@newlist = sort @data ;

print “After sorting : @newlist \n”;

SORTING NUMERICALLY

Page 106: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 106/169

SORTING NUMERICALLY1. Define a sort subroutine

2. 2 elements from list will be assigned to $a and $b3. Compare $a and $b

4. If $a is less than $b return -1If $a is equal $b return 0

If $a is larger than $b return 1

5. Use “sort routinename list” in main program

NUMERICAL SORT

Page 107: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 107/169

NUMERICAL SORT@data = (1,13,2,15,10,30) ;

@newdata = sort number @data ;print “ After sorting : @newdata \n” ;

sub number {

if ( $a < $b ) { -1 ; }

elsif ( $a == $b ) { 0 ; }

else { 1 ; }}

SPACESHIP <=> OPERATOR

Page 108: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 108/169

SPACESHIP <=> OPERATOR  sub number {

$a <=> $b ;}

Sorting list of number from input

1. print sort number <> ;

sub number { $a <=> $b ; } ;

2. perl -e ‘ print sort { $a <=> $b ; } ; ’

7 : REGULAR EXPRESSION

Page 109: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 109/169

 7 : REGULAR EXPRESSION• Common regexp. meatacharacters

• Perl pattern matching

• Modifier and Backreference

• split( ) and join( )

REGEXP. CONCEPT

Page 110: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 110/169

• A pattern or template to be matched against a

string• Regular Expression composed of 2 types of 

characters• Normal text character ( Literal )

• Special characters or Metacharacter (

Grammar or Rule )

REGEXP COMMANDS

Page 111: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 111/169

REGEXP. COMMANDS• Unix utilities : ed , grep , awk , sed , lex ,etc.

• Editors : vi , emacs ,etc.• Programming Languages : Perl , Tcl , Python

• Programming Environment : Delphi , VisualC++

GREP & FGREP & EGREP

Page 112: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 112/169

GREP & FGREP & EGREP  grep

global/regular expression/print : grep [ option ]

  OPTION MEANING

  -n Show linenumber

  -i I nore case

GREP EXAMPLE

Page 113: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 113/169

GREP EXAMPLE$ grep root /etc/passwd

$ grep -n “sub” *.pl

$ grep -I “from:” mbox

$ grep -v ksh /etc/passwd

METACHARACTERS

Page 114: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 114/169

• Start and end of line

• Character Class• Matching any character

• Alternation• Quantifiers

^ (START) AND $ (END)

Page 115: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 115/169

SYNTAX : pattern match pattern at start of line

  pattern$ match pattern at end of line

EXAMPLE MEANING

line Match “line” at beginning of line

ksh$ Match “ksh” at end of line

test$ Match line that have only “test”$ Match empty line

EXAMPLE

Page 116: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 116/169

$ egrep “ chop” *.pl

$ egrep “ksh$” /etc/passwd

$ egrep -n “ root” /etc/passwd

$ egrep “ $” *

CHARACTER CLASS : [ ]

Page 117: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 117/169

SYNTAX : [ … ] or [ char1 - charN]

EXAMPLE MEANING

gr[ea]y Match gray or grey

<H[123456]> Match <H1> <H2>,<H3>,...,<H6><H[1-6]> The same as above

[a-z][0-9] Match any lowercase followed with a digit

[Tt]he Match the or The at beginning of line

NEGATED CHARACTER CLASS

Page 118: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 118/169

SYNTAX : [ …..]

EXAMPLE MEANING

q[ u] Match q followed with any character except u

[ 0-9] Match any line that do not begin with number

DOT : MATCH A CHARACTER

Page 119: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 119/169

EXAMPLE MEANING

file. Match “file” with a character

[0-9]. Match a digit with any character

aa.zz Match aa followed with any character and zzdd.mm.yy Match dd/mm/yy, dd-mm-yy ,dd:mm:yy , etc.

…$ Match any line that has 3 characters

| : ALTERNATIONS

Page 120: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 120/169

SYNTAX : pattern |pattern | …..

EXAMPLE MEANING

grey|gray Match grey or gray

gr(e|a)y Match grey or gray (same as above)(First|1st) [Ss]treet Match “First Street” , “First street”,

“1st Street” , “1st street”

(From|To) : Match “ From :” or “ To :”

<(H|h)[1-6]> Match <H[1-6]> or <h[1-6]>

QUANTIFIERS

Page 121: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 121/169

CHARACTER MEANING

  * Zero or more of previous haracters

  + One of more of previous character

  ? Zero or one of previous character

( Optional )

STAR * : ZERO OR MORE

Page 122: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 122/169

EXAMPLE MEANING

  a* Matchnothing , a , aa , aaa, aaaa , etc.

  abc* Matchab , abc , abcc , abccc , etc.

  (abc)* Matchnothing , abc , abcabc , abcabcabc , etc.  .* Match any character any number of times

  x.*x Match any character that start and end with x

  [ab]* Matchnothing,a,b, ab , ba , aba , aab ,bba ,etc. (a*|b*) Matchnothing ,a , b , aa , bb ,aaa, bbb , aaaa , etc.

Page 123: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 123/169

? : OPTIONAL ITEM

EXAMPLE MEANING

Page 124: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 124/169

EXAMPLE MEANING

  ab? Matchaandab  colou?r Matchcolor andcolour

  J uly? Match J ul and J uly  30(th)? Match30and30th

  fo+ba?r Match fobr, fobar, foobr , foobar ,etc

[-+]?[0-9]+ Match any integer with optional sign

PERL CHARACTER CLASSES

N E i l t Cl C d

Page 125: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 125/169

Name Equivalent Class Code

Digit [0-9] \d

Word character [a-zA-Z0-9_] \w

Space character [ \t\n\r\f] \s

Not Digit [ 0-9] \D

Not word [ a-zA-Z0-9_] \W

Not space [ \t\n\r\f] \SWord boundary \b

Non word boundary \B

EXAMPLEEXAMPLE MEANING

Page 126: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 126/169

EXAMPLEEXAMPLE MEANING

[-+]?\d+ Match an nteger with optional sign

the\s+the Matchdouble thewith at least one space

\d\d:\d\d\s(am|pm) Match time<\w+> Match any word within < and >

Q : Define IP Address pattern match

Q : What does <HR\s+SIZE\s*=\s*[0-9]+\s*> match ???

PATTERN RANGE { }

SYNTAX : pattern{min max}or pattern{min }or

Page 127: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 127/169

SYNTAX : pattern{min , max} or pattern{min , } or

pattern{num}

EXAMPLE MEANING

  X{1,5} Match X, XX, XXX, XXXX, XXXXX  A{0,1} The same as A?

  \d{0,} The same as \d*

  \w{1,} The same as \w+

\(\d{3}\)\s+\d{7} Match telephone number with (code area)

PERL PATTERN MATCHING

SYNTAX :

Page 128: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 128/169

SYNTAX :

1. if ( $var =~ m/pattern/ ) { …………….. }

2. if ( $var =~ m#pattern#) { …………….. }

2. if ( $_ =~ m/pattern/ ) { …………….. }3. if ( m/pattern/ ) { …...………. }

4. if ( /pattern/ ) { ……..…….. }

 TINY GREP PRGORAM

grep1pl

Page 129: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 129/169

grep1.pl

#This program check for pattern “http”

while ( <> ) {if ( m/http/ ) {

print ;

}

}

ANOTHER GREP PROGRAM

grep2pl

Page 130: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 130/169

grep2.pl

die “Usage: $0 pattern file\n” if ( scalar(@ARGV) != 2 ) ;$pat = $ARGV[0] ;

$file = $ARGV[1] ;

open(FILE,$file) or die “Can not open file $file !!!” ;while ( $line = <FILE> ) {

if ( $line =~ m/$pat/ ) {

print “$line”

}

}

MATCHING URL

url1 pl

Page 131: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 131/169

url1.pl

while (<>) {print if (/http:/) ;

print if (/ftp:/) ;print if (/mailto:/) ;

print if (telnet:/) ;

}

IGNORE COMMENT LINE

commentpl

Page 132: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 132/169

comment.pl

open(FILE,”comment”) or die “Can not open file !!!\n”;

while ( <FILE> ) {

next if ( / #/ ) ;print ;

}

CHECKING INPUT

input pl

Page 133: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 133/169

input.pl

for(;;) {

print “Enter your command : ” ;

chop($ans = <STDIN>) ;

last if ( $ans =~/ [qQ] / ) ;

#Same as ( <STDIN> =~ / [qQ]/ )}

CHECKING DIGIT

digit pl

Page 134: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 134/169

digit.pl

print “Enter any digit : ”;

chop($reply = <STDIN> ) ;

if ( $reply =~ m#[0-9]+$#) {

print “$reply is digit \n”;

} else {print “$reply is not digit \n”;

}

MATCHING PHONE NUMBER

phone.pl

Page 135: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 135/169

phone.pl

print “Enter telephone number : ” ;

chop($phone = <STDIN> );

unless ( $phone =~ m/ \d{7}$/ ) {print “$phone is not valid telephone number \n”;

}

Page 136: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 136/169

HOW TO IGNORE CASE

Assume that we want to match either “y” or “Y” at beginning

Page 137: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 137/169

y g g

of line.

1. Use /I syntax

if ($input =~ / y/I )2. Use alternation syntax […]

if ($input =~ / [yY]/ )

3. Use logical or operatorif ( $input eq “y” or $input eq “Y” )

REGEXP. REPLACEMENT

SYNTAX : s/regexp/replacement/

Page 138: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 138/169

g p p

sub1.pl

$_ = “this is simple string” ;

s/string/sentence/ ; #Default with $_ print “$_ \n”;

$x = “From here to eternity” ;

$x =~ s/here/there/ ;print “$x\n”;

MATCH GLOBALLY WITH /g

SYNTAX : /pattern/g

Page 139: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 139/169

p g

sub2.pl

$x = “Oh! captain my captain “ ;

$x =~ s/captain/CAPTAIN/g ;print “$x\n”;

$_ = “To be or not to be” ;

s/be/**BE***/gi ;print “$_\n”;

STRIP LEADING SPACE

strip.pl

Page 140: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 140/169

open(FILE,”white.txt”) or die “Can not open file !!!\n”;

while (<FILE>) {

s/ \s*// ;print ;

}

close(FILE) ;

BACKREFERENCE

SYNTAX

Page 141: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 141/169

/ (pattern) (pattern) …….. \1 \2 …../

/ (pattern) (pattern) …… /

{ $1 $2 ….. }

EXAMPLE

1. /red.blue./

Page 142: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 142/169

Match “red” followed with any char. and “blue” and any char.

2. /red(.)blue\1/

Match “red” followed with a char. and “blue” and with same char.

3. /test(.*)prog\1/

Match “test” followed with any char. and “prog” and followed with

same sequence

4. /(\w+)\s*=\s*\1/

Match “foo=foo” , “hello = hello” , etc..

SWAP WORD

$ perl

Page 143: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 143/169

$ p

$_ = “hello world”;s/(\w+)\W+(\w+)/\2 \1/ ;

print “$_\n”;

EXTRACT INFORMATION

$ perl

Page 144: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 144/169

$_ = “This is a test” ;

/(\w+)\W+(\w+)/ ;

print “$1\n$2\n”;

$ perl

$_ = “Another example program” ;

($first , $second) = /(\w+)\W+(\w+)/ ;print “$first\n$second\n”;

SPECIAL VARIABLE

VARIABLE MEANING

Page 145: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 145/169

  $& Match part of string that match regexp.

  $ Match part of string before $&

  $’ Match part of string after $&

EXAMPLE

$ perl

Page 146: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 146/169

$_ = “This is test on perl pattern matching” ;/p.*l/ ;

print “$&\n”;

print “$ \n”;

print “$’\n”;

SPLIT( )

SYNTAX : split ( /pattern/ , variable)

Page 147: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 147/169

  split /pattern/

  split

$ perl$_ = “this is a test on split” ;

@char = split ; # The same as split ( /\s+/,$_ )

print “@char\n”;

EXTRACTING CHARACTER

SYNTAX : split(//,variable)

Page 148: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 148/169

extract.pl

print “Enter your word : “;

chop($input = <STDIN>);

@word = split(//,$input) ;

foreach (@word) { print “$_\n”; }

PALINDROME EXAMPLE

palin1.pl

i t “E t d ” h ($ d STDIN )

Page 149: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 149/169

print “Enter your word :” ; chop($word = <STDIN>) ;

@forw = split(//,$word) ;

@back = reverse @forw ;

for($I = 0 ; $I < scalar(@forw) ; ++$I ) {if ( $forw[$I] ne $back[$I] ) {

die “$word is not palindrome\n”

}}

print “$word is palindrome\n”;

HISTOGRAM EXAMPLE

hist.pl

Page 150: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 150/169

open(DATA, “hist.dat”) or die “Can not open file !!!\n”;

while(<DATA>) {

@input = split ;print “$input[0]\t” ;

print “*” x $input[1] . “\n” ;

close(DATA) ;

FILE /etc/passwd

FORMAT

l i t d d id id t h di h ll

Page 151: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 151/169

login:encrypted password:uid:gid:comment:home dir.:shell

EXAMPLE

root:x:0:0:ROOT:/:www:x:999:1:Web server account :/usr/users/www:/bin/ksh

lotus:x:1000:5:Kornkwan :/usr/users/lotus:/bin/csh

 jaew:x:1001:1:Thanita:/usr2/users/jaew:/bin/bash

Page 152: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 152/169

DIRECTORY SEARCH PATH

path.pl

Page 153: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 153/169

$dirpath = $ENV{“PATH”} ;

@dirname = split (/:/ , $dirpath ) ;

foreach ( @dirname ) {

print “$_\n”;

}

 J OIN( )

SYNTAX :  join  expr , list

Page 154: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 154/169

$ perl

@list = (“bat” , “cat” , “penguin” ) ;

$animal = join(“:”,@list) ;

print “$animal\n”;

PALINDROME WITH J OIN()

palin2.pl

print “Enter yourword :” ; chop($word = <STDIN>) ;

Page 155: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 155/169

print Enter your word : ; chop($word = <STDIN>) ;

@forw = split(//,$word );

$back = join(‘‘,reverse @forw) ;

if ( $word eq $back ) {print “$word is palindrome\n” ;

} else {

print “$word is not palindrome \n”;}

1.

Page 156: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 156/169

/etc/passwd

1. account UID 0

2. UID

3. account

password

8 : HASH• Hash Literal and variable

Page 157: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 157/169

• keys( ) operator• values( ) operator

• each( ) operator• exists( ) operator

• delete( ) operator

• Special Hash : %ENV

DEFINITION

• Hash ( Associative Array ) is an array that can be

Page 158: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 158/169

accessed by key name• Each pair in hash is interpreted as key/value pair

HASH LITERLAL & VARIABLE

• Hash variable %

Page 159: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 159/169

%ENV , %array• %day = (

“Mon”,”Monday”,”Tue”,”Tuesday”) ;

• access element hash $hash{$key}

$day{“Mon”}

“Monday”

ACCESS COLOR CODE

color.pl

%color =( “red” =>0X00F ,

Page 160: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 160/169

%color ( red > 0X00F ,

“green” => 0X0F0 ,

“blue” => 0XF00 ) ;

#Same as ( “red”,0x00f,”green”,0x0f0,”blue”,0xf00 )print “Enter color name :” ;

chop($name = <STDIN>) ;

print “Code for $name is $color{$name} \n ”;

KEYS( ) OPERATOR

keys.pl

Page 161: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 161/169

$assoc{“name”} = “Hari Seldon” ;$assoc{“addres”} = “Sterling University” ;

$assoc{“city”} = “Trantor” ;

@keyname = keys %assoc ;

print “@keyname \n”;

RETRIEVING KEYS

key2.pl

%comm = ( “ls”, ”dir”,”mv”, ”rename”,”rm,”del” ) ;

Page 162: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 162/169

( , , , , , ) ;

foreach $key (keys %comm) {

print “Unix command $key has DOS command as$comm{$key} \n”;

}

VALUES( ) OPERATOR

value.pl

Page 163: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 163/169

$capital{“Thailand”} = “Bangkok” ;

$capital{“Japan”} = “Tokyo” ;

$capital{“England”} = “London” ;@capital = values %capital ;

print “@capital \n”;

EACH( ) OPERATOR

each.pl

Page 164: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 164/169

%money = ( “Thai” => “Baht” ,“America” => “Dollar ,

“Japan” => “Yen” ,

) ;while ( ($country,$name) = each %money) {

print “$country has money name as $name \n”;

}

EXISTS( ) OPERATOR

• Return true if the specified hash key exists in itshash

Page 165: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 165/169

• Example :

print “Exists \n” if ( exists $hash{$key} ) ;

DELETE( ) OPERATOR

delete.pl

Page 166: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 166/169

%bookcover = ( “Perl” => “Camel” ,

“Compiler” => “Dragon” ,

“Postscript” => “Red”) ;

delete $bookcover{“Postscript”} ;

print keys %bookcover ;

ENVIRONMENT VARIABLES

SPECIAL HASH : %ENV

Page 167: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 167/169

env.pl

while ( ($key,$value) = each %ENV ) {

print “$key has value as $value \n”;

}

USEFUL ENVIRONMENT

VARIABLES

USEFUL ENVIRONMENT

VARIABLESNAME MEANING

Page 168: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 168/169

LOGNAME Current login name

HOME Home directory

PATH Directory search path

SHELL Login shell

KNOWING OS NAME

osname.pl

Page 169: Learn Perl Language

7/29/2019 Learn Perl Language

http://slidepdf.com/reader/full/learn-perl-language 169/169

use Config ;

$osname = $Config{‘osname’} ;

print “This machine run $osname as O.S. \n” ;