1 / 34

Programming Perls*

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

sun
Download Presentation

Programming Perls*

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. Topics • Getting Started • scalars • lists and arrays • hashes • I/O • File handles • regular expressions

  3. Hello, World! #!/usr/bin/perl print "Hello, World!\n"; #!/usr/bin/perl @lines = `perldoc -u -f atan2`; foreach (@lines) { s/(\w)<([^>]+)>/$1<\U$2>/g; print; }

  4. A More Complicated Example #!/usr/bin/perl -w open(FIND,"find . -print |") || die "Couldn't run find: $!\n"; FILE: while ($filename = <FIND>) { chomp($filename); next FILE unless -T $filename; if (!open(TEXTFILE, $filename)) { print STDERR "Can't open $filename--continuing...\n"; next FILE; } while (<TEXTFILE>) { foreach $word (@ARGV) { if (index($_,$word) >= 0) { print "$filename: $word\n"; next; } } } }

  5. Getting Help • man perl • perldoc • Learning Perl • Programming Perl • www.cpan.org, www.pm.org, www.perlmonks.org

  6. scalars • numbers: 3, 3.14159, 7.24e15 • strings: ‘fred’, “barney”, “hello\n” • variables: $name, $count • assignment: $name = ‘fred’; $count = 1; $count += 1; $name = $fred . ‘flinstone’; • special variables: $_

  7. operators • numbers • 2+3, 5.1-2.4, 3 * 12, 14/2, 10/3 • ==, !=, <, >, <=, >= • strings • concatenation: str1 . str2 • replication: str x num • eq, ne, lt, gt, le, ge

  8. print • single vs. double quotes • ‘$firstname flinstone’ • “$firstname flinstone” • print “My name is $name\n” • print $firstname, $lastname, “\n” • STDOUT, STDERR

  9. Conditionals • Boolean value (any scalar value) • false: undef, 0, ‘’, ‘0’ • true: everything else $count = 10; if ($count > 0) { print $count, “\n”; $count -= 1; } else { print “blast off\n”; }

  10. Loops $count =10; while ($count > 0) { print $count, “\n”; $count -= 1; } print “blast off\n”;

  11. Getting User Input • line input operator: <STDIN> • $line = <STDIN> # includes \n • chomp removes \n • chomp($line)

  12. Sum Odd Numbers #!/usr/bin/perl #Add up some odd numbers $n = 1; 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";

  13. Exercise 2.1 • Write a program that computes the circumference of a circle with radius 12.5. Use $pi = 3.141592654

  14. Exercise 2.2 • Modify the previous program to prompt and read the radius

  15. Exercise 2.3 • Modify the previous program so that if the radius is less than zero, the circumference is set to zero.

  16. Exercise 2.4 • Write a program that prompts for and reads two numbers, on separate lines, and prints their product.

  17. 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).

  18. 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)

  19. 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)

  20. List Operators • @array = 1..5; • The shift operator removes the first element of a list • $first = shift(@array); • $first = 1; @array = (2,3,4,5) • The unshift operator prepends an element to the beginning of a list • unshift(@array,1); • @array = (1,2,3,4,5)

  21. 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);

  22. foreach Control Structure foreach $i (1..10) { print “$i\n”; } foreach (1..10) { print “$_\n”; }

  23. Reading Lines #!/usr/bin/perl chomp(@lines = <STDIN>); # read lines, not newlines foreach $line (@lines) { print "$line\n"; }

  24. 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.

  25. 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

  26. 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.

  27. 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”; }

  28. Hashes • The hash as a whole is referred to by a variable whose name starts with % • %hash = (“barney”, “rubble”, “fred”, “flinstone”); • %hash =(“barney” => “rubble”, • “fred” => “flinstone”); • @key-value-list = %hash

  29. Hashes • To obtain the keys in a hash • @first_names = keys(%hash); • To obtain the values in a hash • @last_names = values(%hash);

  30. The each Function • You can loop over the key-value pairs in a hash while ( ($key, $value) = each %hash ) { print “$key => $value\n”; } • The order is not specified – use sort if you care. foreach $key (sort keys %hash) { $value = $hash{$key}; print “$key => $value\n”; }

  31. The exists Function • 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”; }

  32. Deleting Entries from a Hash • delete($family_name{fred});

  33. Exercise 5.1 • Write a program that will ask the user for a given name and report the corresponding family name.

  34. 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.

More Related