ling c sc psyc 438 538 n.
Skip this Video
Loading SlideShow in 5 Seconds..
LING/C SC/PSYC 438/538 PowerPoint Presentation
Download Presentation
LING/C SC/PSYC 438/538

Loading in 2 Seconds...

  share
play fullscreen
1 / 21
Download Presentation

LING/C SC/PSYC 438/538 - PowerPoint PPT Presentation

brielle-mendoza
61 Views
Download Presentation

LING/C SC/PSYC 438/538

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. LING/C SC/PSYC 438/538 Lecture 5 Sandiway Fong

  2. Today’s Topics • File input/output • open, <> • References • Perl modules • Homework 2: due next Monday by midnight • email: sandiway@email.arizona.edu • one PDF file • subject: 438/538 homework 2

  3. File I/O • Step 1: call open() Files: must be opened for reading “<“ or writing “>” (overwrite or append mode “>>”) Shell syntax: I/Oredirection “<“ “>” Opening a file creates a file handle (Perl variable) – not to be confused with filename Supply the file handle for read/write

  4. File I/O • Step 2: use the <> operator: $in is the file handle instantiated by the open() call

  5. File I/O • Line by line: open($txtfile, $ARGV[0]) or die "$ARGV[0] not found!\n"; while ($line = <$txtfile>) { print "$line"; } close($txtfile) • the command $line = <$txtfile> inside the condition reads in a line from the file • referenced by the file handle $txtfile • and places that line into the variable $line (including the newline at the end of the line) • At the end of the file, $line is just an empty string (equivalent to false). • the filename is the first parameter to the perl program (arguments go in @ARGV).

  6. More complex data structures • Arrays and hashes may only contain scalars • Question: How to accomplish nesting, i.e. put non-scalars inside? • Answer: use references (pointers), which happen to be scalars • http://perldoc.perl.org/perlreftut.html (actually a reference is just an unsigned number: computer address)

  7. References Remember bracketing when initializing: ( ) List – can be used for both arrays and hashes [] Reference to an array {} Reference to a hash • Two ways to make a reference:

  8. References • Example: array of arrays Note: uses Make Rule 2 • Let’s figure out what the following mean: de-reference

  9. References • Looping (using for/foreach) with array/hash references: Be careful! $aref->[3] and $aref[3] are different

  10. References • Code: $a = [1, 2, 3, 4, 5]; print $a+1 • What happens here?

  11. References • Looping (using for/foreach) with array/hash references: Be careful! $href->{‘red’} vs. $href{‘red’} are different.

  12. Experiment • Unicode encoding (utf-8)

  13. Experiment • Note: open pragma most general solution

  14. Perl Modules • CPAN: Comprehensive Perl Archive Network terminal command • sudocpanmUnicode::CaseFold

  15. cpanm • Ubuntu: Ubuntu: sudo apt-get cpanminus

  16. cpanm • OSX: assume command line tools have been installed • xcode-select --install • uses program curl (cURL) • a command line tool for getting or sending files using URL syntax bash-3.2$ which cpanm bash-3.curl -L http://cpanmin.us | perl - --sudo App::cpanminus % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 303 0 303 0 0 56 0 --:--:-- 0:00:05 --:--:-- 1553 100 262k 100 262k 0 0 22916 0 0:00:11 0:00:11 --:--:-- 64374 --> Working on App::cpanminus Fetching http://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7000.tar.gz ... OK Configuring App-cpanminus-1.7000 ... OK Building and testing App-cpanminus-1.7000 ... Password: OK Successfully installed App-cpanminus-1.7000 1 distribution installed bash-3.2$ which cpanm /usr/local/bin/cpanm

  17. Example of module use

  18. Homework 2 Question 1 (10pts) • Create a file data.txt(example): • Love for the the Bronx Bombers bubbled up in the absence of some local franchise. • On on on the table, we have some eggs. • I have home sharing turned on, on both my computer and my apple tv. • Write a Perl program that detects repeated words (many spell check/grammar programs can do this) • Your program should read in data.txt and print a message stating the line number, the repeated word and its position if one exists. Example output: • perlrepeated.perldata.txt • Line 1: word 3, “the” repeated 2 times • Line 2: word 1, “on” repeated 3 times • Submit your program and examples of its output Note: case

  19. Homework 2 • Useful functions: chomp vs. chop split a string into words Note: multiple spaces ok with “ “ version

  20. Homework 2 • Question 2: describe how a repeated word program could stop flagging legitimate examples of repeated words in a sentence • Examples: • I wish that that question had an answer • Because he had had too many beers already, he skipped the Friday office happy hour

  21. Homework 2 • Microsoft Word: