Programming Perls* • Objective: To introduce students to the perl language. – Perl is a language for getting your job done. – Making Easy Things Easy & Hard Things Possible – Perl is a language for easily manipulating text, files, and processes – Combines concepts from unix, sed, awk, shell scripts – Language of system administrators, web developers and more… – Practical Extraction and Report Language – Pathologically Eclectic Rubbish Lister y of the examples in this lecture e from “Learning Perl”, 3 rd Ed, Schwartz & T. Phoenix, O’Reilly, 2001
34
Embed
Programming Perls* Objective: To introduce students to the perl language. –Perl is a language for getting your job done. –Making Easy Things Easy & Hard.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Programming Perls*• Objective: To introduce students to the perl
language.– Perl is a language for getting your job done.– Making Easy Things Easy & Hard Things Possible– Perl is a language for easily manipulating text, files, and
processes– Combines concepts from unix, sed, awk, shell scripts– Language of system administrators, web developers and
more…– Practical Extraction and Report Language– Pathologically Eclectic Rubbish Lister
*Many of the examples in this lecture come from “Learning Perl”, 3rd Ed, R. Schwartz & T. Phoenix, O’Reilly, 2001
print "How many odd numbers do you want to add? ";
$howmany = <STDIN>;
chomp($howmany);
while ($n <= $howmany) {
$sum += 2*$n - 1;
$n += 1;
}
print "The sum of the first $howmany odd numbers = $sum\n";
Exercise 2.1
• Write a program that computes the circumference of a circle with radius 12.5. Use $pi = 3.141592654
Exercise 2.2
• Modify the previous program to prompt and read the radius
Exercise 2.3
• Modify the previous program so that if the radius is less than zero, the circumference is set to zero.
Exercise 2.4
• Write a program that prompts for and reads two numbers, on separate lines, and prints their product.
Exercise 2.5
• Write a program that prompts for and reads a string and a number (on separate lines) and prints the string the number of times indicated by the number (on separate lines).
Arrays and Lists
• Used interchangeably• List variables @name• List literals (“fred”,2,3)• @primes = (2,3,5,7,11,13,17)• @range = 1..10• Accessing elements: $primes[3]• Length of a list: $#primes• List assignment: ($p1, $p2, $p3) = (2,3,5)
List Operators
• @array = 1..5;• The pop operator removes the last element of a list• $last = pop(@array);
– @array = (1,2,3,4); $last=5
• The push operator appends an element to the end of a list
• push(@array,5);– @array = (1,2,3,4,5)
List Operators
• @array = 1..5;• The shift operator removes the first element of a
• The unshift operator prepends an element to the beginning of a list– unshift(@array,1);– @array = (1,2,3,4,5)
List Operators
• @array = 1..5;• The reverse operator reverses the elements
of a list– @rarray = reverse(@array);
• The sort operator sorts the elements of a list– @sarray = sort(@rarray);– @students = (“Sam”, “Fred”, “Anna”, “Sue”);– print sort(@students);
foreach Control Structure
foreach $i (1..10) {
print “$i\n”;
}
foreach (1..10) {
print “$_\n”;
}
Reading Lines
#!/usr/bin/perl
chomp(@lines = <STDIN>); # read lines, not newlines
foreach $line (@lines) {
print "$line\n";
}
Exercise 3.1
• Write a program that reads a list of strings on separate lines until end-of-input and prints the list in reverse order.
Exercise 3.2
• Write a program that reads a list of numbers on separate lines until end-of-input and then prints for each number the corresponding person’s name from the list – fred betty barney dino wilma pebbles bamm-
bamm
Exercise 3.3
• Write a program that reads a list of strings on separate lines until the end-of-input. Then it should print the strings in alphabetical order.
Hashes
• An array that can be indexed by arbitrary strings
• $family_name{“fred”} = “flintstone;
• $family_name{“barney”} = “rubble”;
foreach $person in keys( %family_name ) {
print “Full name = $family_name{$person}\n”;
}
Hashes
• The hash as a whole is referred to by a variable whose name starts with %
• You can query to see if an entry with a given key has been inserted into a hash
if (exists $last_name{$person}) {
print “$person has a last name\n”;
}
Deleting Entries from a Hash
• delete($family_name{fred});
Exercise 5.1
• Write a program that will ask the user for a given name and report the corresponding family name.
Exercise 5.2
• Write a program that reads a series of words (with one word per line) until end-of-input, then prints a summary of how many times each word was seen.