490 likes | 613 Views
IT441 Network Services Administration. Prof. Alfred J Bird, Ph.D., NBCT abird@cs.umb.edu http:// it441-s14-bird.wikispaces.umb.edu / Office – McCormick 3rd floor 607 Office Hours – Tuesday and Thursday 4:00PM to 5:15PM. Scalars. What is a Scalar? Types of Scalars: Numbers Strings
E N D
IT441Network Services Administration Prof. Alfred J Bird, Ph.D., NBCT abird@cs.umb.edu http://it441-s14-bird.wikispaces.umb.edu/ Office – McCormick 3rd floor 607 Office Hours – Tuesday and Thursday 4:00PM to 5:15PM
Scalars • What is a Scalar? • Types of Scalars: • Numbers • Strings • Logical or Boolean • Automatic conversion between types
Numbering Systems • Decimal • Binary • Octal • Hexadecimal
Constant (Literal) • What is a constant? • Why do we use a constant? • Write a simple program to print out a few constants. • Single quoted vs. Double quoted strings
Variables • What is a variable? • How do we name variables? • Starts with $ • Next either letter or _ • Rest can be letters or numbers • You should develop a pattern so you are consistent within your programs. • Make the name mean something!!!
Numeric Operators • + Addition • - Subtraction • * Multiplication • / Division • ** Exponentiation • % Modulo (Remainder)
Boolean Operators • && And • || Or • ! Not
Numerical Comparisions • == Equality • < Less Than • <= Less Than or Equal To • > Greater Than • >= Greater Than or Equal To
String Operators • . Concatenation • x Repetition • ord() ASCII Value of a character • lt Less Than • gt Greater Than • eq Equal To
String Comparisions • $x gt $y • $x lt $y • $x ge $y • $x le $y • $x eq $y • $x ne $y
A Couple of More Things • $a++ Autoincrement • $b-- Autodecrement • Scoping: Blocks of code limit the range of a variables definition $numDef=25; print $numDef; { my $numDef=1; print $numDef;} print $numDef;
Ways to get out of a program • exit (0); • die $string;
Increment/Decrement • A very helpful construct is the increment/decrement statement • $i++ is equivalent to $i = $i+1 • $j = $i++ • $j = ++$i • $j = $i - - • $j = - - $i
Logical Operators • $x and &y • $x && $y • $x or $y • $x || $y • not $x • !$x
Control Flow Constructs • What is a control statement? • Types of control statements: • if • while • for
If Statements • if • if ( condition ) { action } • if else • if (condition ) { action } • else {another action } • if elsif else • if ( condition ) { action } • elsif (another condition ) { another action } • … • else { a further action }
If Statements (cont) • unless statement unless (condition) {action}; • Reversed order print “Hello Al\n” if($inputName = “Al”); die “Can’t divide by zero\n:” if ($num4 == 0);
While Statement • while loops • while ( condition ) { action } • $i=1; • while ($i<=5) { • print $i, “\n”; • $i++; • } • until loops • Same form but opposite action of the while loop
An interesting variable • $_ is the default variable for many functions • while ( $line = <STDIN>) { • chomp ($line); • … • } • while (<STDIN>) { • chomp; • … • }
Breaking Out of a Loop • There are three ways to modify the execution of the loop: • last; • next; • redo; • Statement labels • Labels a location in the program • Best to use all uppercase letters OUTER: while(…) { … }
Another Form of Loops • do { action } while ( condition ); • do { action } until ( condition );
For statement • for loop • for ( init_exp ; test_exp; step_exp) { action } • for ($i=1; $i<5; $i++) {print $i, “\n”;}
Foreach loop • foreach my $number (1..10) { • print “The number is: $number \n”; • }
Alternative String Delimiters • q// single quoted string • qq// double quoted string • In qq// the // can be replaced with any other non-alphanumeric character provided you use the same character on both ends of the string
Operators on Strings and Numbers • $a = “123” • $b = “456” • What do we get if we write this line of code, • print $a + $b; • How about this line of code, • print $a . $b;
Math Operators • ** Exponentiation • - Unitary Negation • * Multiplication • / Division • % Modulo (Remainder) • + Addition • - Subtraction
Getting Data into the Program • Use the file handle <STDIN> • Try this out print “Input something:”; my $newInput=<STDIN>; print $newInput; • chomp ($newInput); • chop($newInput);
A better way • We want to know for sure that we were successful opening the file so we include a test: • open (OUT1, “>>test.txt”) or die $!;
Using a filehandle • To use a filehandle you wrap it in angle brackets. • print OUT1 “Hello World!\n”; • chomp ($in = <IN1>);
I/O Redirectors • Remember what the redirectors do: • > • >> • <
Comment Blocks • Perl normally treats lines beginning with a # as a comment. • Get in the habit of including comments with your code. • Put a comment block at the beginning of your code which includes your name, the name of the module, date written and the purpose of the code.
Comment Blocks #!/usr/bin/perl -w # #Module Name: helloWorld.pl # #Written by Alfred J Bird, Ph.D., NBCT #Date Written – 21 September 2011 #Purpose: To print out the string “Hello world!” # #Date Modified – 25 September, 2011 #Purpose of modification: To fix spelling errors. #Modified by: Al Bird # print “Hello world! \n”;
Data Types • Remember there are three basic data types in Perl • Numeric • String • Boolean (Logical) • I differentiate between data types and data structures. Not every author or teacher does. Some books use the terms interchangeably so watch out!
Data Structures • In PERL there are three types of data structures: • Scalars • Arrays • Hashes • Each structure has it own naming syntax. • $scalar • @array • %hash
Lists • I do not consider a list a data structure but some authors, teachers and CS pros do so be careful . • A list is defined as an ordered set of scalar values. • Lists are delimited by parentheses such as • () • (1) • (“a”) • (1, 2, 3, 4, 5) • (“a”, “b”, “c”, “d”, “e”) • (‘e’, ‘d’, ‘c’, ‘b’, ‘a’) • Remember that a list is ordered!
Using a List • You have already been using lists without knowing it. • When you type the following statement print (“Hello ”, “world”, “! “, “\n”); You are passing a list to the print function. • I have just used a new Perl term, function. • A function is subroutine (a free standing piece of code) or an operator that returns a value and/or does something
Another Way to Create a List • Given a list we created this way: (‘Hello’, ‘world.’, ‘I’, ‘am’, Al’) • We can use another method to create it: qw/Hello world I am Al/ • As with earlier similar operators we can use any nonalphanumeric character as a separator: qw#Hello world I am Al# qw&Hello world I am Al& qw{Hello world I am Al}
A Third Way to Create a List • We can create a list by using a range. • This list (1, 2, 3, 4, 5, 6) • Is the same as this list (1..6) • But this will not work: • (6..1) does not give (6, 5, 4, 3, 2, 1) • because the left hand side must be less than the rhs • To get the list (6, 5, 4, 3, 2, 1) using a range we need to type reverse (1..6) • Try these using a print statement!
Printing a List • Remember that a list is ordered! • The elements have a location that can be counted • The counting starts with 0 (the 1st element is number 0) • How do we print a list? • What is the result of the following statements? print (qw/a b c d e f g/); • How about this statement? print qw/a b c d e f g/; • First predict the results and then try them and see what happens.
Printing Individual List Elements • We can refer to individual elements in a list by using a number in brackets [] after the list. • What is the result of the following statement? print ((qw/a b c d e f g/)[2]); • How about this statement: print ((‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’) [3]); • First predict the results and then try them and see what happens. • You can put a scalar variable into the braces $i = 3; print ((qw/a b c d e f g/)[$i]);
A List Slice • We can refer to a range inside the braces. • What do we get when we run the following statement: print ((qw/a b c d e f g/)[2..4]); • First predict the results and then run the statement. • What about this statement: print ((qw/a b c d e f g/)[3..1]);
Extras • What do you think will happen if you enter the following code: print ((‘z’, ‘x’, ‘c’, ‘v’, ’b’, ‘n’, ‘m’)[-1]); • First make a prediction and then run the code. • How about this code $i=2.9; print ((‘z’, ‘x’, ‘c’, ‘v’, ’b’, ‘n’, ‘m’)[$i]); • First make a prediction and then run the code.
Another Data Structure The problem with a list is that it cannot be named! We need to retype the list every time we want to use it. To solve this difficulty we have a data structure called an array. We can give an array a name that starts with a @.
Arrays • An array is a data structure that has the characteristics of a list but can be named! • To store a scalar into a variable we use an assignment statement $a = 1; • To store a list into an array we do the same thing: • @a = (1,2,3,4,5); • @l = (‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’); • @m = qw<az x c v b n m>;
Accessing Individual Elements How do we access an individual element in an array? Just like we did in a list. • Using a list if we code: print ((‘now’, ‘is’, ‘the’, ‘time’)[2]); • It will print out the • Likewise if we define an array: @s = (‘now’, ‘is’, ‘the’, ‘time’); print @s[2]; • Will also print out the • What about print $s[2];? What will it print out?
Scalar vs. List Context • Why does the statement print $s[2]; work? • Use the prefix for what you want not what you have. • This is referred to as list vs. scalar context. • It can become a very important concept later.
Array Functions • How do we add data to an array? • @array = (@array, $scalar); #is one way! • But there is a better way!! • push @array, $scalar; #will do the same thing! • push will append the value in $scalar to the top of @array • Likewise pop will take the last value in an array and do something with it. • $scalar = pop @array
Array Functions • push() and pop() act on the top of an array (the highest indexed end) • shift() and unshift() act on the bottom of an array and perform the same function. • We already know what reverse() does.
Array Functions • Another function is sort(). • What do you think it does? • Write a simple program to try it with your array of months. • Predict the output before you try it. • What happened? • Now write a simple program to try it with your array of number of days. • Predict the output before you try it. • What happened????? • Why?????