learn perl language
TRANSCRIPT
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
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!!!!
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
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.
7/29/2019 Learn Perl Language
http://slidepdf.com/reader/full/learn-perl-language 5/169
CHECKING PERL VERSION
perl -v
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
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
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” ;
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
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
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
7/29/2019 Learn Perl Language
http://slidepdf.com/reader/full/learn-perl-language 12/169
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/… .
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
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
7/29/2019 Learn Perl Language
http://slidepdf.com/reader/full/learn-perl-language 16/169
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
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
7/29/2019 Learn Perl Language
http://slidepdf.com/reader/full/learn-perl-language 19/169
NUMERIC OPERATORS
PRECEDENCE
**
* / %
+ -
7/29/2019 Learn Perl Language
http://slidepdf.com/reader/full/learn-perl-language 20/169
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” ;
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 &
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
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 ;
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
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” ;
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( )
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”;
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
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)
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 ;
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
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
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”;
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( )
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 ) ;
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” ;
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”;
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 ) ;
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”;
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”;
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”;
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”;
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”;
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
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
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” ;
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
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
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
7/29/2019 Learn Perl Language
http://slidepdf.com/reader/full/learn-perl-language 51/169
IF STRUCTURE
if ( condition) { statement;
}else {
statement; }
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
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”;
7/29/2019 Learn Perl Language
http://slidepdf.com/reader/full/learn-perl-language 54/169
UNLESS STRUCTURE unless ( condition ) {
statement
} else { statement
}
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
}
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………..
}
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”;
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
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” ;
}
7/29/2019 Learn Perl Language
http://slidepdf.com/reader/full/learn-perl-language 60/169
7/29/2019 Learn Perl Language
http://slidepdf.com/reader/full/learn-perl-language 61/169
FOREACH STRUCTURE
foreach variable ( list ) { statement
………….}
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 ; }
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”;}
}
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 ;
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
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> );
}
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” );
}
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” ;}
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
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 ;
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
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
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>) ;
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 (<>) ;
7/29/2019 Learn Perl Language
http://slidepdf.com/reader/full/learn-perl-language 75/169
CAT WITH FILENAME$ perl
print “$ARGV : $_” while ( <> ) ;
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
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)
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> );
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” ;
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) ;
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” ;
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
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) ;
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
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
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”;
}
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”;
}
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
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
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
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”;
7/29/2019 Learn Perl Language
http://slidepdf.com/reader/full/learn-perl-language 92/169
FINDING SUM
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
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 )
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
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 @
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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 : [ ]
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
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
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
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
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
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.
7/29/2019 Learn Perl Language
http://slidepdf.com/reader/full/learn-perl-language 123/169
? : OPTIONAL ITEM
EXAMPLE MEANING
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
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
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
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 :
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
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
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
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
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
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
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
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”;
}
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
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/
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
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
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
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./
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
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
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
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
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)
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)
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 )
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
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
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
7/29/2019 Learn Perl Language
http://slidepdf.com/reader/full/learn-perl-language 152/169
DIRECTORY SEARCH PATH
path.pl
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
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>) ;
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.
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
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
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 %
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 ,
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
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” ) ;
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
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
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
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
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
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
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
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” ;