+ All Categories

Perl

Date post: 03-Oct-2015
Category:
Upload: rasurend
View: 9 times
Download: 5 times
Share this document with a friend
Description:
Perl
34
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
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.


Recommended