Title: perl
1perl
- Comprehensive Perl Archive Network
http//www.cpan.org/ - http//www.perl.org/
- http//www.perlmonks.com/
2perl (http//www.perlmonks.com)
- Perl is a high-level programming language with an
eclectic heritage written by Larry Wall and a
cast of thousands. It derives from the ubiquitous
C programming language and to a lesser extent
from sed, awk, the Unix shell, and at least a
dozen other tools and languages.
3perl (http//www.perlmonks.com)
- Perl's process, file, and text manipulation
facilities make it particularly well-suited for
tasks involving quick prototyping, system
utilities, software tools, system management
tasks, database access, graphical programming,
networking, and world wide web programming.
4perl (http//www.perlmonks.com)
- Perl strengths make is especially popular with
system administrators and CGI script authors, but
mathematicians, geneticists, journalists, and
even managers also use Perl.
5 cat p0.pl print "hello \n" perl
p0.pl hello cat p1.pl !/usr/bin/perl print
"hello \n" chmod x p1.pl p1.pl hello
6Scalars
- Basic type of data in Perl they can represent a
number(int, float) or a string of text. Here are
some examples of scalar assignments.
7 cat p2.pl !/usr/bin/perl a 42
an integer pi 3.14159265 a real
number x 6.02e23 scientific
notation pet "dog" string words
"I love my pet" string with
interpretation cost 'It costs 100'
string without interpretation var a
another variable's value cmd pwd
output of command print "a a \t pi pi \t
x x \n" print "pet pet \t words
words \n" print "cost cost \t var var
\n" print "cmd cmd \n"
8Output
p2.pl a 42 pi 3.14159265 x
6.02e23 pet dog words I love my dog cost
It costs 100 var 42 cmd
/usr/people/lacambra/perl
9Arrays
- Arrays are basically a collection of scalars
stored next to each other and accessed by indices
from zero to the number of elements minus one.
Here are examples of some arrays in action. - Note when we are referring to an entire array we
use the _at_ at the beginning of its name. If we're
referring to only one of its elements(which is a
scalar) we use a .
10!/usr/bin/perl _at_a(1,2,3) _at_simpsonsfamily("home
r","marge","lisa","maggie","bart") Arrays
can store either strings or numbers or both.
Now lets see how we can get at an individual
element of an array. print " a0 \n" This
returns the first element in _at_a which is 1 print
" simpsonsfamily4 \n" This returns the fifth
element a34 This sets the 4th element in _at_a
to 4. print "a3 \n"
p3.pl 1 bart 4
Output
11 cat p4.pl !/usr/bin/perl _at_a(1,2,3) _at_breverse
_at_a print "a0 a1 a2 \n" print "b0
b1 b2 \n" print "_at_b \n" p4.pl 1 2 3 3 2
1 3 2 1
The reverse function simply takes a list or
array and reverses it.
12Arithmetic operations
Example Type Result ab Addition Sum of a
and b a-b Substraction Result of b
subtracted from a ab
Multiplication Product of a and
b a/b Division Result of a divided by
b ab Modulus Remainder when a is divided by
b ab Exponentiation a to the power of
b
13 cat p5.pl !/usr/bin/perl a4 b5 print
ab, "\n" arithmetic operator print a.b,
"\n" string operator print ab, "\n"
arithmetic operator print a x b, "\n"
string operators print '-' x 80
print row of dashes p5.pl 9 45 20 44444
-------------------------------------------------
--------
More operators
14List assignments
cat p6.pl !/usr/bin/perl _at_pets("dog","cat","t
arantula") (a, b, c)_at_pets print a,
"\n" print b, "\n" print c, "\n"
p6.pl dog cat tarantula
15List assignments
cat p7.pl !/usr/bin/perl _at_array("dog",1,5.6789
4) (a, b, c)_at_array print a, "\n" print
b, "\n" print c, "\n"
p7.pl dog 1 5.67894
16Control statements and looping
- Perl offers an abundance of looping and control
statements. Some quick notes if you're a C, C,
or Java programmer Perl requires curly braces
around blocks of code even if your for loop has
only one line of code
17- your basic if
- if(value1)
- print "value is equal to 1\n"
-
- your basic if/else
- if(value1)
- print "value is equal to 1\n"
- else
- print "value is not equal to 1\n"
-
18your basic if/elsif/else if(value1)
print "value is equal to 1\n"
elsif(value2) print "value is equal to
2\n" elsif(value3) print "value is
equal to 3\n" else print "value is not
equal to 1,2, or 3\n"
19 cat p8.pl !/usr/bin/perl num25 while(numlt30
) print "num is num\n"
numnum1 p8.pl num is 25 num is 26 num
is 27 num is 28 num is 29
20 cat p9.pl !/usr/bin/perl year1900
until(year2000) print "Mission-critical
electronics working in the year year\n"
it works year print "Not working
anymore\n p9.pl Mission-critical electronics
working in the year 1900 Mission-critical
electronics working in the year 1901
.... Mission-critical electronics working in the
year 1998 Mission-critical electronics working in
the year 1999 Not working anymore
21 cat p10.pl !/usr/bin/perl for(i1 ilt100
i) print "i\n"
This for loop will print the numbers 1 through
100 on separate lines
22 cat p11.pl !/usr/bin/perl _at_numbers(1,7,3,8,9)
foreach(_at_numbers) print "_,"
p11.pl 1,7,3,8,9,
23Files
cat p12.pl !/usr/bin/perl FILE"catalog" open
(FILE) _at_array ltFILEgt close (FILE) foreach
line (_at_array) print "line"
p12.pl PC IBM 400.00 PC HP
300.00 Macintosh900.00 Macintosh700.00
24 cat p13.pl !/usr/bin/perl open(OUTPUT,
"gtgt/tmp/file") a "some text..." print OUTPUT
a close(OUTPUT) cat /tmp/file some
text... p13.pl cat /tmp/file some
text...some text...
Files
25Perl file access revisited
- The most basic way to legally open a file in Perl
was covered - We will see way to open a file using a file
handle - Ways to verify permission/characteristics of a
specific file
26Simplest
- !/usr/bin/perl
- FILE"catalog"
- open (FILE)
- _at_array ltFILEgt
- close (FILE)
- foreach line (_at_array)
- print "line"
-
- p12.pl
- PC IBM 400.00
- PC HP 300.00
- Macintosh900.00
- Macintosh700.00
27using a file handle
- !/usr/bin/perl
- open (FILE,"catalog")
- _at_array ltFILEgt
- close (FILE)
- foreach line (_at_array)
- print "line"
-
- p12bis.pl
- PC IBM 400.00
- PC HP 300.00
- Macintosh900.00
- Macintosh700.00
28Filetest operators
- -w File is writable by effective uid/gid.
- -r File is readable by effective uid/gid.
- -x File is executable by effective uid/gid.
- -o File is owned by effective uid.
- -R File is readable by real uid/gid.
- -W File is writable by real uid/gid.
- -X File is executable by real uid/gid.
- -O File is owned by real uid.
-
29Filetest operators
- -e File exists.
- -z File has zero size.
- -s File has nonzero size (returns size).
- -f File is a plain file.
- -d File is a directory.
- -l File is a symbolic link.
- -b File is a block special file.
- -c File is a character special file.
- -t Filehandle is opened to a tty.
-
30Filetest operators
- cat filetest.pl
- !/usr/bin/perl
- filename"catalog"
- print "Can do.\n" if -r a -w _ -x _
- stat(filename)
- print "Readable\n" if -r _
- print "Writable\n" if -w _
- print "Executable\n" if -x _
- print "Text\n" if -T _
- print "Binary\n" if -B _