+ All Categories

Download - Perl

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 PossiblePerl is a language for easily manipulating text, files, and processesCombines concepts from unix, sed, awk, shell scriptsLanguage of system administrators, web developers and morePractical Extraction and Report LanguagePathologically Eclectic Rubbish Lister*Many of the examples in this lecture come from Learning Perl, 3rd Ed, R. Schwartz & T. Phoenix, OReilly, 2001

  • TopicsGetting Startedscalarslists and arrayshashesI/OFile handlesregular expressions

  • Hello, World!#!/usr/bin/perlprint "Hello, World!\n";

    #!/usr/bin/perl@lines = `perldoc -u -f atan2`;foreach (@lines) { s/(\w)]+)>/$1/g; print;}

  • A More Complicated Example#!/usr/bin/perl -wopen(FIND,"find . -print |") || die "Couldn't run find: $!\n";

    FILE:while ($filename = ) { chomp($filename); next FILE unless -T $filename; if (!open(TEXTFILE, $filename)) { print STDERR "Can't open $filename--continuing...\n"; next FILE; } while () { foreach $word (@ARGV) { if (index($_,$word) >= 0) { print "$filename: $word\n"; next; } } }}

  • Getting Helpman perlperldocLearning PerlProgramming Perlwww.cpan.org, www.pm.org, www.perlmonks.org

  • scalarsnumbers: 3, 3.14159, 7.24e15strings: fred, barney, hello\nvariables: $name, $countassignment: $name = fred; $count = 1; $count += 1; $name = $fred . flinstone;special variables: $_

  • operatorsnumbers2+3, 5.1-2.4, 3 * 12, 14/2, 10/3==, !=, , = stringsconcatenation: str1 . str2replication: str x numeq, ne, lt, gt, le, ge

  • printsingle vs. double quotes$firstname flinstone$firstname flinstoneprint My name is $name\nprint $firstname, $lastname, \nSTDOUT, STDERR

  • ConditionalsBoolean value (any scalar value)false: undef, 0, , 0true: everything else$count = 10;if ($count > 0) { print $count, \n; $count -= 1;} else { print blast off\n;}

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

  • Getting User Inputline input operator: $line = # includes \nchomp removes \nchomp($line)

  • Sum Odd Numbers#!/usr/bin/perl#Add up some odd numbers$n = 1;print "How many odd numbers do you want to add? ";$howmany = ;chomp($howmany);while ($n
  • Exercise 2.1Write a program that computes the circumference of a circle with radius 12.5. Use $pi = 3.141592654

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

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

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

  • Exercise 2.5Write 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 ListsUsed interchangeablyList variables @nameList literals (fred,2,3)@primes = (2,3,5,7,11,13,17)@range = 1..10Accessing elements: $primes[3]Length of a list: $#primesList 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=5The push operator appends an element to the end of a listpush(@array,5);@array = (1,2,3,4,5)

  • 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 listunshift(@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 Structureforeach $i (1..10) { print $i\n;}

    foreach (1..10) { print $_\n;}

  • Reading Lines#!/usr/bin/perlchomp(@lines = ); # read lines, not newlinesforeach $line (@lines) { print "$line\n";}

  • Exercise 3.1Write a program that reads a list of strings on separate lines until end-of-input and prints the list in reverse order.

  • Exercise 3.2Write a program that reads a list of numbers on separate lines until end-of-input and then prints for each number the corresponding persons name from the list fred betty barney dino wilma pebbles bamm-bamm

  • Exercise 3.3Write 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.

  • HashesAn 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;}

  • HashesThe 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

  • HashesTo obtain the keys in a hash@first_names = keys(%hash);

    To obtain the values in a hash@last_names = values(%hash);

  • The each FunctionYou 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;}

  • The exists FunctionYou 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 Hashdelete($family_name{fred});

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

  • Exercise 5.2Write 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.


Top Related