PERL By C. Shing ITEC Dept Radford University
Objectives Understand the history Understand constants and variables Understand operators Understand control structures Understand functions Understand file I/O Understand command line arguments Understand how to use Perl for system administration
History Perl (Practical Extraction Report Language) by Larry Wall (1986) Language between C and shell: Scripting, need interpreter Provide File access and Unix utilities Download site: –File extension (.pl) –Interpret with error message: perl -w filename.pl arg0 arg1 … Artistic license: variation of GNU public license, free
Constants Scalar: –Number: integer, real, scientific notation –String: within “ “ Boolean: –1 represents true –0 represents false
Variables Scalar: begin with $ –Number: integer, real –String: string, character Array: begin –Index starts from 0 Associative: begin with % –use hash
Control Structures Print Assignment Conditional Loop Function (Subroutine)
Control Structures - Print Syntax: each statement ends with ; Print variable [constant]; –Example: print "Please enter a number:";
Control Structures - Assignment Syntax: each statement ends with ; Variable = expression Comment: begins with #
Control Structures - Assignment Scalar Variable Number: integer, real –Example: $i=5 $j=-6.2 String: string, character –Example: $month=“January” $char=“\t”
Control Structures - Assignment Scalar Variable Number: integer, real –Example: $i=5; $j=-6.2; $number = ; (keyboard input) String: string, character –Example: $month=“January”; $char=“\t”; $guess = ; (keyboard input) $fileString = (getting data from file)
Control Structures - Assignment Array Variable = ("john", "susan", "david", "sarah", "ryan", = (1..6); Where $array[0] = “john”; $array[1] = “susan”; $array[5] = “laura”;
Control Structures - Assignment Associative Variable –Example: %hash = ("smith"=>"john", "sides"=> "susan", "davis"=>"david", "star"=>"sarah", "rush"=>"ryan","lane"=> "laura"); Where $array{“smith”} = “john”; $array{“sides”} = “susan”; $array{“lane”} = “laura”;
Operators – Arithmetic, Logic, Relational Arithmetic: +,-,*,/ Logical: &&, || Relational –Numeric: ==, !=, >, >=, <, <= –String: eq, ne, gt, ge, lt, le
Operators - String String –Concatenation:. Example: –$month = $month.$char; –$message = "This is a number ".”\t”.$number. "\n"; –Match: =~ Example; $line =~ s/the/THE/g; (replace all the by THE in the $line) $line =~ /(\w+)(\s+)(\w+)(\s+)/; (line that matches the pattern: word, spaces, word
Control Structures - Conditional Syntax 1.If (condition) { } 2.If (condition) { } else { } 3.If (condition1) { } elsif (condition2) { } else { }
Control Structures - Conditional Example: if ($guess eq "hello") { print "The word ".$guess." that you guessed is correct.\n\n"; }
Control Structures - Conditional Example: if ($avg >=0.895*$avgall) { $grade="A"; } elsif ($avg >=0.795*$avgall) { $grade="B"; } elsif ($avg >=0.695*$avgall) { $grade="C"; } elsif ($avg >=0.595*$avgall) { $grade="D"; } else { $grade="F"; }
Control Structures - Loop 1.While 2.Until 3.Foreach 4.For
Control Structures – While Loop Syntax while (condition) { } when condition is false, exit loop
Control Structures – While Loop while ($line= ) { }
Control Structures – Until Loop Syntax until (condition) { } when condition is true, exit loop
Control Structures – Until Loop Example: until ($array2[0] eq "listing") { }
Control Structures – Foreach Loop Syntax foreach variable (variableRange) { } when variable is outside of variableRange, exit loop
Control Structures – Foreach Loop Example: foreach $month (1..12) { }
Control Structures – For Loop Syntax for (initialization; condition; ending body stmt) { } when condition is false, exit loop
Control Structures – For Loop Example: for ($i=1; $i<=12; ++$i) { }
Control Structures - Function (Subroutine) 1.Library function 2.User (-defined) function
Control Structures – Library Function 1.lc() or lc : convert to lower case 2.uc(): convert to upper case 3.open(), close(), die(), exit(), last(): See File I/O 4.print() 5.length(): length of string 6.index()
Control Structures – Library Function Example: # search item through list foreach $user { if ($user eq lc($item)) { $user_correct = 1; } } # foreach
Control Structures – Library Function 7.keys(): gives the key value of the hash 8.chomp(): delete the new line character from variable 9.split (delimiter, variable) : split a variable using delimiter 10.my(): create local variable 11.shift (arrayName): get rid of 1 st element in the arrayName 12.push (array1, array2): push array2 to the end of array1
Control Structures – Library Function Example: while ($line= ) { chomp($line); # username are separated by /\s+/, $line; }
Control Structures – Library Function Example: foreach $userkey (keys %hash) { if ($hash{$userkey} eq lc($name)) { $user_correct = 1; $lastname=$userkey; } } # foreach
Control Structures – User Function Function call: –Syntax: functionname (actualParameterList); –Example: check
Control Structures – User Function Function definition: –Syntax: sub functionname { my $localVar1 = $_[0]; my $localVar2 = $_[1]; }
Control Structures – User Function Function definition: –Example: check sub check { # the following 3 lines declare local variables my $item = $_[0]; my $user_correct = 0; }
Control Structures – User Function Example: sub printArray { is a local variable in the sub foreach $cell { print $cell."\t"; } print "\n"; } # sub printArray
File I/O Open/Close file: –Syntax: open (FILEHANDLE, “<filename”); close (FILEHANDLE);
File I/O Open/Close file: –Example: # read all names from input data file: sixth2.txt open (NAMEFILE, "<sixth2.txt") || die "Error: Unable to open the file $!"; # open output file for print open (OUTFILE,">attend.txt"); print OUTFILE "Lastname\t\tFirstname\t\t Name\n";
Command Line Arguments perl –w filename.pl arg0 arg1 arg2 … Arg0, arg1 and arg2… are command line arguments Inside the program, they are stored in
Command Line Arguments Example: open (USERFILE, "<user$ARGV[0].txt") || die "Error: Unable to open the file $!"; open (OUTFILE,">attend$ARGV[0].txt"); print OUTFILE "Library Attendance for ITEC 100-$ARGV[0]\n\n";
System Administration Call system library when using shell commands in Perl Give full path name for shell commands –Use which command to find full path name Watch for reserved names in Perl
System Administration Example: Run Perl in Unix environment –system("/usr/local/gnu/bin/awk '{print \$1,\$2,\$9}' temp1.txt > temp2.txt"); –system("/usr/bin/rm -f temp2.txt"); If you run Perl in Unix, make sure to change data into Unix format, such as: –system("/usr/bin/dos2unix session.txt session.txt");
Reference Some simple examples