* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Lec-1-perl
Survey
Document related concepts
Transcript
CS 360 Internet Programming Objectives for this class period Web programming is important Administrative organization of the course Introduction to first two labs Basic Perl Job Postings In terms of specific technologies you should be familiar with, you should be comfortable programming in Java, PHP, and/or .NET (any, but not necessarily all, are desirable). Excellent working knowledge of HTML is a must. It would also be helpful to have some experience with JavaScript, HTTP, and regular expressions. Familiarity with other web-related technologies such as Active Server Pages and J2EE is helpful. You should also have experience working with relational databases (e.g., mySQL). Job Postings This full-time or part-time programmer would help develop our current web application in JavaScript, PHP, MySQL, Flex (a bonus), (minimum 2 years experience in PHP). We are moving in a transition to AJAX and Python for portions of our application and knowledge in these areas is a bonus. What is CS 360? It gives you the skills you need to apply for these jobs It provides you with Operating System Fundamentals File Systems Semaphores Sockets You should have a good architectural view of internet programming Overview 15 Laboratories will keep you busy Due nearly every week Midterm and Final covering book material Homework Due each Friday Create a web page This class should be a lot of fun! First Lab Due Wednesday Create a web page for homework assignments Make it passwd protected The first real lab is due on Friday Install Apache Write Perl code to test performance You will apply this to your web server in future labs This shouldn’t be hard, but you need to get started now Perl Introduction Uses Shell scripts CGI, web engines Good at Text processing Small/Medium sized projects Quick and dirty solutions Portability (to a certain degree) Perl Introduction Bad at Efficient large scale computation Neat code! Hello World #!/usr/bin/perl # This is a comment. It goes to the end of the line. # Perl is easy. It helps to be neat. # Just like C, every statement must end with ; print “Hello World\n”; Perl Data Types Three Main Datatypes Scalar • • • • A single number, string or reference. $sequence = “acgtac”; $num = 6; $num = $num + 1; List • A collection of scalar datatypes. • @insects = ( “hopper acgtacacactgca”, “flick acgcacacattgca”, “Catapillar acgcatattttgca”); • $insects[$num] = “ant attaccagga”; • Length of an array $#insects” Hash • Pairs of scalars, accessed by keys. • %hash = ( “Spins” => “Atlas”, “Sings” => “Goldfish” ); • $hash{“Spins”} = “Globe”; Perl Context Operations may return diferent values, or do different things based on the context in which they are called. Reading from a filehandle $one_line = <FILEHANDLE>; @whole_file = <FILEHANDLE>; Removing Newlines chomp($string); chomp(@list); Perl Syntax Basic Operators: + - * / ++ -- *= += -= /= String concatenation: $newstring = $s . “another string”; Numerical operations if($x == $y) if($x <= $y) if($x > $y) Equality Less than or Equal to Greater than String operations (Based on lexial ordering) if ($s1 eq $s2) if($s1 gt $s2) if($s1 le $s2) Stringwise equality Stringwise greater than Stringwise less or equal Perl Basics – ‘if’ Selective evaluate blocks of code depending on a condition. If ($string eq “blah”) { print “String is blah\n”; } elsif ($string eq “spoo”) { Print “String is spoo\n”; } else { Print “String isnt either?\n”; } Perl Basics - ‘if’ Can also be done as a ‘one-liner’ print “String is foo\n” if ($string eq “foo”); Unless (Not if) print “String is not foo\n” unless ($string eq “foo); Unless cannot have else or else if components. Perl Basics – ‘for’ Practically the same as C/C++/Java for ($i = 0; $i < 10; $i++) { print “i is “ . $i . “\n”; } Perl Basics – ‘foreach’ A handy way of processing a list foreach $grocery (@groceries) { scan($grocery); } Can use the default variable ($_) foreach (@groceries) { scan($_); } Perl Default Variables Most basic functions will operate on the default variable by default. foreach (@list) { chomp; print; } Above chomps each element, and prints it. Perl Basics Command-line arguments Contained in @ARGV Strings just like C $ARGV[0] is not the program name Environment variables Contained in %ENV print $ENV{“PATH”}; Perl Basics - Subroutines Identified by keyword “sub” Arguments come in @_ Local variables identified by keyword “my” #!/usr/bin/perl $t1 = 1; $t2 = 2; $t3 = testsubroutine($t1, $t2); print "The answer from testsubroutine is: $t3\n"; sub testsubroutine { my $arg1 = shift @_; my $arg2 = shift; return $arg1 + $arg2; } #Since _ is default variable, we don’t have to type it Perl Filehandles An interface to an open file. Line read operator is angle brackets. open(INFILE, “dna1.txt”) or die “cant open dna1.txt: $!”; while(<INFILE>) { print “line $_\n”; <STDIN> <STDERR> Opening files in other modes Change the filename string “<dna1.txt” read dna1.txt “>dna2.txt” output to dna2.txt “>>dna2.txt” append to dna2.txt } Perl File Reading & Writing $FILE1 = $ARGV[0]; $FILE2 = $ARGV[1]; open(FILE1) or die "Unable to open $FILE1 for reading\n"; open(FILE2, ">” . $FILE2) or die "Unable to open $FILE2 for writing\n"; while (<FILE1>) { print FILE2 $_; } close(FILE1); close(FILE2); Running other programs Use back ticks Use the system command $people = `who`; system(“who > who.dat”); Using piped input open(PEOPLE, “who |”); while(<PEOPLE>) { print “$_ is logged on\n”; } Libwww Don’t worry about the CGI in the examples, we will get to it later # Create a user agent object use LWP::UserAgent; $ua = LWP::UserAgent->new; $ua->agent("MyApp/0.1 "); # Create a request my $req = HTTP::Request->new(POST => 'http://search.cpan.org/search'); $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"; } This is really easy Practice and work with examples from the web. Look at all of the response elements You will want to use this perl script to debug your web server.