Perl modules
Download
1 / 15

Perl Modules - PowerPoint PPT Presentation


  • 158 Views
  • Uploaded on

Perl Modules. Darby Tien-Hao Chang Department of Electrical Engineering, National Cheng Kung University. CPAN Comprehensive Perl Archive Network. http://search.cpan.org/. CGI.pm Simple Common Gateway Interface class. You can find some resources from CPAN: Source Typical usage

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Perl Modules' - artie


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Perl modules

Perl Modules

Darby Tien-Hao Chang

Department of Electrical Engineering, National Cheng Kung University


Cpan comprehensive perl archive network
CPANComprehensive Perl Archive Network

  • http://search.cpan.org/


Cgi pm simple common gateway interface class
CGI.pmSimple Common Gateway Interface class

  • You can find some resources from CPAN:

    • Source

    • Typical usage

    • Function-by-function description

  • How do I know the module name “CGI”?


Lwp simple simple procedural interface to lwp
LWP::SimpleSimple procedural interface to LWP

  • So, what is LWP?

    • The World-Wide Web library for Perl

  • get($url)

    • How do we get a POST web page?

  • head($url)

  • getprint($url)

  • getstore($url, $file)

  • mirror($url, $file)

  • is_success($rc)

  • is_error($rc)


How to post
How to POST?

  • #!/usr/bin/perl -w

  • # dependent modules

  • use strict;

  • use LWP::UserAgent;

  • my $url = "http://www.ebi.ac.uk/thornton-srv/databases/cgi-bin/pdbsum/GetPage.pl";

  • my @form = {

  • "pdbcode" => "1bck"

  • };

  • my $ua = new LWP::UserAgent;

  • my $response = $ua->post( $url, \@form );

  • if ( $response->is_success ) {

  • print $response->content; # or whatever

  • } else {

  • die $response->status_line;

  • }


Compare to the get example
Compare to the GET example

  • #!/usr/bin/perl -w

  • # dependent modules

  • use strict;

  • use LWP::Simple;

  • my $url = "http://www.pdb.org/pdb/navbarsearch.do?inputQuickSearch=1bck";

  • my $web = &get( $url );

  • print "$web“;


What is lwp useragent
What is LWP::UserAgent?

  • It’s a browser!

  • It contain almost everything of your browser… if Perl can mimic

  • LWP Library version number and documentation

  • LWP::MediaTypes MIME types configuration (text/html etc.)

  • LWP::Debug Debug logging module

  • LWP::Simple Simplified procedural interface for common functions

  • HTTP::Status HTTP status code (200 OK etc)

  • HTTP::Date Date parsing module for HTTP date formats

  • HTTP::Negotiate HTTP content negotiation calculation

  • File::Listing Parse directory listings

  • HTML::Form Processing for <form>s in HTML documents


Lwp lwp simple and lwp useragent what a mess
LWP, LWP::Simple and LWP::UserAgent, what a mess!

  • You can include LWP directly

    • use LWP;

  • There are some clues in the CPAN

    • http://search.cpan.org/~gaas/libwww-perl-5.805/lib/LWP/Simple.pm

    • http://search.cpan.org/~gaas/libwww-perl-5.805/lib/LWP.pm


Multi steps extraction
Multi-steps extraction

  • #!/usr/bin/perl -w

  • use LWP::Simple;

  • my $term = “棒球";

  • my $url = "http://tw.sports.yahoo.com/bj2008/schedule.html";

  • my $web = &get( $url );

  • $web =~ /href=([^>"]+)>$term/ or die;

  • $url = "http://tw.sports.yahoo.com/bj2008/$1";

  • $web = &get( $url );


A more browser like perl module www mechanize
A more browser-like Perl moduleWWW::Mechanize

  • use WWW::Mechanize;

  • my $mech = WWW::Mechanize->new();

  • $mech->get( $url );

  • $mech->follow_link( n => 3 );

  • $mech->follow_link( text_regex => qr/download this/i );

  • $mech->follow_link( url => 'http://host.com/index.html' );

  • $mech->submit_form(

    • form_number => 3,

    • fields => {

      • username => 'mungo',

      • password => 'lost-and-alone',

    • }

  • );

  • $mech->submit_form(

    • form_name => 'search',

    • fields => {

      • query => 'pot of gold',

    • },

    • button => 'Search Now‘

  • );


Consider a cgi program to show some server information
Consider a CGI program to show some server information

  • #!/usr/bin/perl -w

  • print “Content-type: text/html\n\n”;

  • print “<html>”;

  • print “<head>”;

  • print “<title>Test Template</title>”;

  • print “</head>”;

  • print “<body>”;

  • print “My Home Directory is $ENV{HOME}<br />”;

  • print “My Path is set to $ENV{PATH}”;

  • print “</body>”;

  • print “</html>”;


Now suppose that we have a wizard like web application
Now suppose that we have a wizard-like web application

  • Step1.html

    • Input your first name, last name and e-mail

  • Step2.pl

    • Validate the e-mail and one more question

  • Step3.pl

    • Show the final page


How will you design the three page
How will you design the three page?

  • They are supposed to be very similar

  • And there could be numerous redundant code


One more perl module to help cgi pm html template
One more Perl module to help CGI.pmHTML::Template

  • <html>

    • <head>

      • <title>Test Template</title>

    • </head>

    • <body>

      • My Home Directory is <TMPL_VAR NAME=HOME><br />

      • My Path is set to <TMPL_VAR NAME=PATH>

    • </body>

  • </html>

  • #!/usr/bin/perl -w

  • use HTML::Template;

  • # open the html template

  • my $template = HTML::Template->new(filename => 'test.html');

  • # fill in some parameters $template->param(HOME => $ENV{HOME});

  • $template->param(PATH => $ENV{PATH});

  • # send the obligatory Content-Type and print the template output

  • print "Content-Type: text/html\n\n", $template->output;


The tags
The tags

  • TMPL_VAR

    • <TMPL_VAR NAME="PARAMETER_NAME">

  • TMPL_LOOP

    • <TMPL_LOOP NAME=EMPLOYEE_INFO>

      • Name: <TMPL_VAR NAME=NAME><br/>

      • Job: <TMPL_VAR NAME=JOB>

    • </TMPL_LOOP>

    • $template->param(EMPLOYEE_INFO => [

      • { name => 'Sam', job => 'programmer' },

      • { name => 'Steve', job => 'soda jerk' },

    • ] );

    • print $template->output();

  • TMPL_IF, TMPL_ELSE


ad