Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
187 KB
Nội dung
Learning Perl programming CISC/QCSE 810 Dirty Secret In computation-based science, a shockingly large number of person-hours are spent on bookkeeping Common worries: have I run all the data through the filter? have I run all four algorithms on my new test case? in the graph in my paper generated using the latest optimization algorithm, or the one before? how can I track the progress of this data through pre- processing, search, filtering, and graphing? Modularity is most effective when combined with automation History of Perl In the mid 1980's, Larry Wall was working as a sysadmin and found that he needed to do a number of common, yet oddball functions over and over again. And he didn't like any of the scripting languages that were around at the time, so he invented Perl. Version 1 was released circa 1987. A few changes have occurred between then and now. The current version of Perl has exceeded 5.8.0 and is a highly recommended upgrade. What Is Perl? Practical Extraction and Report Language Originally focused on text parsing, input and output Since has generalized to a "glue" language, as well as having libraries dedicated to particular scientific and computer science areas Where is it used? Anywhere you parse or manipulate text Web servers (CGI scripts) Database access and processing Anywhere you want to automate file handling and organization Generally not the first choice for numeric calculations not compiled, not type-safe Type of Language Semi-interpreted Uses byte-code representation like Java Doesn't store byte code for later re-use In desktop usage, most like BASIC write program, then run it Advantages – no compiling, no makefiles Disadvantages – can be slower running, not type-safe, can encourage poor style Example #!/usr/bin/perl -w if (@ARGV != 1) { die "Usage: prog1 <filename>\n"; } $filename = shift @ARGV; open(FILE, $filename) or die "Unable to open $filename\n"; %word_count = (); while ($line = <FILE>) { chomp $line; @words = split('\s+', $line); foreach $word (@words) { $word_count{$word} += 1; } } close(FILE); Example continued # *** Print words in alphabetic order *** foreach $word (sort (keys(%word_count))) { print "$word: " . $word_count{$word} . "\n"; } # *** Print words in descending count order *** sub hashValueDescendingNum { $word_count{$b} <=> $word_count{$a}; } print ("-" x 80) . "\n"; @sorted_words = sort hashValueDescendingNum keys(%word_count); foreach $word (@sorted_words) { print "$word: " . $word_count{$word} . "\n"; } Basic Datatypes Scalar $ any single value can (and often is) converted at will between integer, double, string Array @ an array of scalars Hash % like the STL map, an easy way to construct fast lookup tables Perl as File Walker #!/usr/bin/perl -w @ppt_files = <*.ppt>; print "PPT files in the directory are ". join(", ", @ppt_files) . "\n"; @all_files = <*>; foreach $file (@all_files) { if (-f $file) { print "file: $file\n"; } elsif (-d $file) { print "dir: $file\n"; } } [...]... (search for "perl file test operators") Search for pairs of files (e.g "Song01" and "Song01.f" For each, report whether the second file is newer than the first Resources Learning Perl by O'Reilly http://proquestcombo.safaribooksonline.com/0596101058 Perl books on-line http://www .perl. org/books/library.html CPAN – Comprehensive Perl Archive Network http://www.cpan.org/ Perl Monks http://www.perlmonks.org/... system("") exec exec("") Example #!/usr/bin /perl -w @all_files = ; FILE: foreach $file (@all_files) { if (! -f $file) { next FILE; } $wc_resp = `wc -l $file`; chomp $wc_resp; @wc_resp_arr = split /\s+/, $wc_resp; $lines_in_file = $wc_resp_arr[0]; print "$file: $lines_in_file lines\n"; } Perl as a Web Browser with LWP Perl library, Perl can act as a web browser download web pages ... Perl Terse syntax more than one way to do it default variables The dark side of code maintainability are they Easily they flow, quick to join you when code you write If once you start down the dark path, forever will it dominate your destiny, consume you it will LUKE: Is Perl better than Python? YODA: No no no Quicker, easier, more seductive LUKE: But how will I know why Python is better than Perl? ... $req->content_type('application/x-www-form-urlencoded'); $req->content('query=libwww -perl& mode=dist'); # Pass request to the user agent and get a response back my $res = $ua->request($req); # Check the outcome of the response if ($res->is_success) { print $res->content; } else { print $res->status_line, "\n"; } Perl as a Controller Perl can communicate via ports can set supervisor running on one computer... Automated the uploading of slides, via perl FTP package Downloaded all the web-based version of a textbook to a local copy Batch run data analysis across multiple machines Manage process of updating graphs of research results Load TA assignments from a flat file into a database, using DBD package Generate HTML reports from database Check directories for redundant files Perl isn't unique Python and Ruby... redundant files Perl isn't unique Python and Ruby are two other languages that can play similar roles not compiled can be included on web servers similar intent of easy file and text manipulations Using Perl is a personal preference for me learned first, haven't felt anything missing included in almost every Unix distribution EXTERIOR: DAGOBAH DAY With Yoda strapped to his back, Luke climbs up one . Learning Perl programming CISC/QCSE 810 Dirty Secret In computation-based science, a shockingly large number. invented Perl. Version 1 was released circa 1987. A few changes have occurred between then and now. The current version of Perl has exceeded 5.8.0 and is a highly recommended upgrade. What Is Perl? Practical. $lines_in_file = $wc_resp_arr[0]; print "$file: $lines_in_file lines
"; } Perl as a Web Browser with LWP Perl library, Perl can act as a web browser download web pages identify and follow