7-1 網??????????

Perl b Web {]pPΪγ~iHjT譱G
  1. Ω CGI]Common Gateway Interface^{]pAYbAݨϥ Perl {ӱϥΪ̥Ѻ]Forms^ҶgơAæ^оATC
  2. Ω Web Client ProgrammingAYϥΦbΤݪ Perl {AӧһݪΨLWơC
  3. ΩƳBzAҦpq~ΪTC
`NwĤGβĤTIӻC

bΤݭn Perl {ӧһݪḀDn{wiѨϥΡG

  1. LWP Library: oO@վAΩ Perl ĤҲա]Module^AiHݦOMΩ Web Client Programming ε{]Application Program Interface, API^A{²AΦҲռgXӪ{X]²C
  2. Socket Library: oO@ոChε{AiHΤݩMAإ TCP/IP sAöiUسqTPqCSocket Library \jjAѩ]tӦhӸ`A]DzߪeC
ѩ@ΤuOn Web AӤwA]`дNH LWP Library DC

LWP Library S٬ libwww-perl-5ADn@̡]]Oʪ̡^O Gisle AasALOھ Roy Fielding b Perl 4 ҵoi libwww library ӥ[HsB}ӱo쪺ҲաCM LWP Library UظTiboG

http://www.linpro.no/lwp/
IܥѵoꬰALWP Library ̷sO 5.48AoO 2000 ~|ECثebWH LWP Library ¦ҼgѦ⥻G |@ӳ²檺ҤlApGnMؤjǸTtAiHϥΤUC{X]lwp1.pl^G

lɡ]lwp1.pl^G]ǦϰUYi^
use LWP::Simple;
$doc = get 'http://www.cs.nthu.edu.tw';
print($doc);

Wz{XĤ@CAN{X|Ψ LWP Library W٬ Simple ҲաCĤGC{XNMjTt^AñNTJrܼ $docCĤTC{XhLXܼ $docC̬۫HAbҦ{XAרϥΥyAA]i|Wz{X²䪺FI

ƹWAYnñN䤺eܦbùWAڭ̥iHb DOS ROUJUC檺ԭzG

perl -MLWP::Simple -e 'getprint "http://www.cs.nthu.edu.tw";' Perl N|ϥ LWP Library ӮAñN HTML lܦbùWAṲ̄@աI

YbolXAƱR HTML ҡ]Tags^AhiϥΤUC{X]lwp2.pl^G

lɡ]lwp2.pl^G]ǦϰUYi^
use LWP::Simple;
foreach (get $ARGV[0]) {
	s/<[^>]*>//g;
	print;
}

bWzdҤAARGV[0] NѩROCJĤ@ӰѼơA]HUO@өIsdҵ{ҤlG

perl lwp2.pl http://neural.cs.nthu.edu.tw/jang YbolXAƱH ASCII ɮܡAɶqOd HTML ƪĪGAhiϥΤUC{X]lwp3.pl^G

lɡ]lwp3.pl^G]ǦϰUYi^
use LWP::Simple;
use HTML::Parse;
print parse_html(get ($ARGV[0]))->format;

YƱlXҥ]tҦsAiϥΤUC{X]tlink1.pl^G

lɡ]tlink1.pl^G]ǦϰUYi^
use LWP::Simple;
use HTML::Parse;
use HTML::Element;
$html = get $ARGV[0];
$parsed_html = HTML::Parse::parse_html($html);
for (@{ $parsed_html->extract_links() }) {
	$link = $_->[0];
	print "$link\n";
}

ڭ̥iWz{XApUG

perl tlink1.pl http://neural.cs.nthu.edu.tw/jang ᪺GpUG sandbox/html/autoload.htm /jang/cgi-bin/rand_image.pl graphics/myname.jpg graphics/animgif/flare.gif graphics/course.gif graphics/research.gif http://neural.cs.nthu.edu.tw/jang/courses/cs4601/ http://neural.cs.nthu.edu.tw/jang/courses/cs5652/ http://www.cs.nthu.edu.tw/~jang/courses/cs3331/ ... Perl {MwNUӳsLXAǬO۹}AǫhO}AD`KCHU{X]tlink2.pl^iHNҦs۹}ন}G

lɡ]tlink2.pl^G]ǦϰUYi^
use LWP::Simple;
use HTML::Parse;
use HTML::Element;
use URI::URL;
$html = get $ARGV[0];
$parsed_html = HTML::Parse::parse_html($html);
for (@{ $parsed_html->extract_links() }) {
	$link = $_->[0];
	$url = new URI::URL $link;
	$full_url = $url->abs($ARGV[0]);
	print "$full_url\n";
}

ڭ̥iWz{XApUG

perl tlink2.pl http://neural.cs.nthu.edu.tw/jang ᪺GpUG http://neural.cs.nthu.edu.tw/sandbox/html/autoload.htm http://neural.cs.nthu.edu.tw/jang/cgi-bin/rand_image.pl http://neural.cs.nthu.edu.tw/graphics/myname.jpg http://neural.cs.nthu.edu.tw/graphics/animgif/flare.gif http://neural.cs.nthu.edu.tw/graphics/course.gif http://neural.cs.nthu.edu.tw/graphics/research.gif http://neural.cs.nthu.edu.tw/jang/courses/cs4601/ http://neural.cs.nthu.edu.tw/jang/courses/cs5652/ http://www.cs.nthu.edu.tw/~jang/courses/cs3331/ ... ܩaAҦ۹|wgQন|COA䤤ܦhsOs@Ӽvɡ]p*.jpg)AäOڭ̩ҷQ쪺TA]ڭ̥iΤUC{X]tlink3.pl^ӳWdҷQnrsG

lɡ]tlink3.pl^G]ǦϰUYi^
use LWP::Simple;
use HTML::Parse;
use HTML::Element;
use URI::URL;
$html = get $ARGV[0];
$parsed_html = HTML::Parse::parse_html($html);
for (@{ $parsed_html->extract_links((a)) }) {
	$link = $_->[0];
	$url = new URI::URL $link;
	$full_url = $url->abs($ARGV[0]);
	print $full_url\n;
}

ڭ̥iWz{XApUG

perl tlink3.pl http://neural.cs.nthu.edu.tw/jang ᪺GpUG http://neural.cs.nthu.edu.tw/sandbox/html/autoload.htm http://neural.cs.nthu.edu.tw/jang/courses/cs4601/ http://neural.cs.nthu.edu.tw/jang/courses/cs5652/ http://www.cs.nthu.edu.tw/~jang/courses/cs3331/ http://neural.cs.nthu.edu.tw/jang/courses/cs3430/ http://www.cs.nthu.edu.tw/~jang/mlbook/demo http://www.cs.nthu.edu.tw/~jang/mlbook http://neural.cs.nthu.edu.tw/research/undergrad http://anfis.cs.nthu.edu.tw/vod/ http://140.114.119.1/~vm ... Ѧi tlink3.pl wgiHXsAӥBҦs}]ഫ}CpGڭ̭n@@ Web jMAĤ@BJNOngX@ Web RobotA\NOnAéC@Ӻs}AMAU~QsAp̦CҥHWzdҵ{ANO@² Web Robot ΡC
Perl