PERL - People
Download
Report
Transcript PERL - People
PERL
The Scripting Programming
Language
#!/usr/bin/perl
WHAT IS PERL ?
• Perl is a programming language.
• Unlike programming languages such
as C and Fortran, Perl programs are
scripts which direct the execution of the
program “perl”.
• Perl execution is similar in form to shell
script execution.
• Available for many platforms (not just UNIX)
• http://perldoc.perl.org/perlintro.html
1
#!/usr/bin/perl
WHY USE PERL ?
• Perl is quick and easy to write.
•Complex operations made easy:
perl -e 's/John/Mary/gi' -p -i.bak *.html
• Perl is versatile:
• File/Sequence Management
• Command Line Execution
• Database
• GUI, Web
• Easy manipulation of sequences in
genetic sequence analysis. Remember
The Hman Genome Project?
2
3
#!/usr/bin/perl
BASIC SCRIPT
• The script “Example.pl” is:
#!/usr/bin/perl
$x = 1;
$y = 1;
$z = $x + $y;
print “$x + $y = $z”;
• The execution of Example.pl is:
> chmod +x Example.pl
> ./Example.pl
1 + 1 = 2
#!/usr/bin/perl
WHAT ARE PERL
VARIABLES ?
• Three main perl variables:
• Scalar : $name
• Array : @name
• Hash : %name
4
#!/usr/bin/perl
PERL SCALAR
• Scalar variables are common and
versatile.
• Scalar variables hold either numbers
or strings
$number = 12.4;
$string = “Value is: “;
print “$string$number\n”;
$string = $string . “number 12”;
print “$string\n”;
• Generates:
Value is: 12.4
Value is: number 12
5
6
#!/usr/bin/perl
PERL ARRAY
• Array holds a list of values
$value = “there”;
@array = (“Hello”,$value,1);
print “$arr[0] $arr[1] number $arr[2]\n”;
$array[2] = 2;
$array[3] = “again”;
print “$arr[0] $arr[3] number “, $arr[2] – 1, “\n”;
$size = @array;
print “Array has size $size\n”;
• Generates:
Hello there number 1
Hello again number 1
Array has size 4
7
#!/usr/bin/perl
PERL HASH
• Hash holds references to values
%hash = ( “number” => 1, 34 => “Hello there” );
print $hash{34}, “ number “, $hash{“number”}, “\n”;
@array = keys %hash;
foreach $ref (@array){
print “Key: $ref = $hash{$ref}\n”;
}
• Generates:
Hello there number 1
Key number = 1
Key 34 = Hello there
#!/usr/bin/perl
8
LINE CONTROL
• Perl controls line execution with
•
•
•
•
if – elsif – else
while
for
foreach
• With comparisons:
• For numbers:
< (less than), > (greater than)
<= (less than or equal), >= (greater than or equal)
== (equal)
• For strings:
eq (equal strings)
ne (not equal strings)
#!/usr/bin/perl
IF – ELSIF - ELSE
• For example:
if( $val < 2 ){
print “Value is less than 2\n”;
}
elsif( $val == 2 ){
print “Value is equal to 2\n”;
}
else{
print “Value is greater than 2\n”;
}
if( $stringA eq $stringB ){
print “Both strings are the same\n”;
}
else{
print “Both strings are different\n”;
}
9
#!/usr/bin/perl
10
WHILE, FOR LOOPS
• For example:
# while( condition )
while( $i < 20 ){
print “The value $i is less than 20\n”;
$i++;
}
# for( initial operation; condition; loop action )
for( $i = 0; $i < 20; $i++ ){
print “The value $i is greater or equal to 0\n”;
print “The value $i is less than 20\n”;
}
#!/usr/bin/perl
11
FOREACH LOOP
• For example:
# foreach $value ( @array )
foreach $value ( @array ){
print “The value $value is in the array\n”;
}
foreach $value ( keys %hash ){
print “$value has value $hash{$value}\n”;
}
• Note that foreach loops traverse the array
from low index to high index.
#!/usr/bin/perl
12
READING IN DATA
• Array @ARGV holds command line arguments
• To open and read in a file:
open(IN,”$fileName”);
$firstLine = <IN>;
while(<IN>){
print $_;
}
close(IN);
• To write to a file:
open(OUT,”> $fileName”);
print OUT “Write this into $fileName\n”;
close(OUT);
#!/usr/bin/perl
13
STANDARD STREAMS
• To read standard input:
print “Write something: “;
$value = <STDIN>;
print “User wrote $value\n”;
• To write to standard output:
print STDOUT “You see this on the command line\n”;
• To write to standard error:
print STDERR “This is written as an error\n”;
14
#!/usr/bin/perl
REGULAR
EXPRESIONS
• Regular expressions are a powerful
tool for locating and modifying data
• The basic evaluation of regular
expression are written as:
$variable =~ /regular expression/
which returns true if the variable holds
to the regular expression and false
otherwise.
#!/usr/bin/perl
REG EXP EXAMPLES
• Example:
if( $string =~ /Jonathan/ ){
print “The string contains Jonathan”;
print “as a substring.\n”;
}
if( $string !~ /Myers/ ){
print “The string does not contain”;
print “Myers as a substring”;
}
15
#!/usr/bin/perl
16
REG EXP Variables
• Basic elements in regular expressions:
/./ = Any single character
/\w/ = Any character a-z, A-Z, 0-9, and ‘_’
/\d/ = Any digit 0-9
/\s/ = space, tab, or enter
/\./ = The character ‘.’
/\\/ = The character ‘\’
• Definition of groups:
/[xyz]/ = Occurrence of either x, y or z
/[^xyz]/ = Occurrence of anything but x, y, or z
• Location of occurrence:
/^x/ = Occurrence of x as the first character
/x$/ = Occurrence of x as the last character
#!/usr/bin/perl
REG EXP Counts
• Number of occurrences:
/x*/ = 0
/x+/ = 1
/x{3}/ =
/(str)*/
or more copies of character ‘x’ in a row
or more copies of character ‘x’ in a row
3 copies of character ‘x’ in a row
= 0 or more copies of string ‘str’ in a
row
/$var*/ = 0 or more copies of the string $var in
a row
• Example:
$str = “a string with too much”;
if( $str =~ /o{2}/ ){
print “True!\n”;
}
if( $str =~ /(crazy)*/ ){
print “True!\n”;
}
17
#!/usr/bin/perl
Substitutions
• Substitutions are regular expressions
that define replacements within strings.
$str =~ s/(regular expression)/(replacement)/
• Examples:
$str = “aabbccddeeff”;
$str =~ s/c/1/;
print “$str\n”;
$str =~ s/.$/2/;
print “$str\n”;
$str =~ s/^\w{3}/start /;
print “$str\n”;
• Generates:
aabb1cddeeff
aabb1cddeef2
start b1cddeef2
18
#!/usr/bin/perl
SPLIT FUNCTION
• Split function breaks a string into an
array of strings
@array = split(/(regular expression)/,$string)
• Example:
$str = “A set of strings”;
@array = split(/\s+/,$str);
for( $i = 0; $i < @array; $i++ ){
print “$array[$i]\n”;
}
• Generates:
A
set
of
strings
19
20
#!/usr/bin/perl
REMEMBER
PRACTICE!!!!
• We learn by doing !!!!
• Look at these sites!!!
• http://perldoc.perl.org/perlintro.html
• http://www.perl.com/pub/a/2000/10/begperl1.html
• http://www.comp.leeds.ac.uk/Perl/start.html