📄 webautomation.mht
字号:
#Tue Nov 18 13:41:32 1997 http://www.perl.com/universal/header.map
#
#Wed Oct 1 12:55:13 1997 http://www.songline.com/
#
#Sun Aug 17 21:43:51 1997 =
http://www.perl.com/graphics/perlhome_header.jpg
#
#Sun Aug 17 21:43:47 1997 http://www.perl.com/graphics/perl_id_313c.gif
#
#Sun Aug 17 21:43:46 1997 http://www.perl.com/graphics/ora_logo.gif
#
#Sun Aug 17 21:43:44 1997 http://www.perl.com/graphics/header-nav.gif
#-----------------------------
</FONT></PRE></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN1081>Creating HTML Templates</A></H2>
<TABLE width=3D"100%" bgColor=3D#2f4f4f border=3D0>
<TBODY>
<TR>
<TD><PRE class=3DSCREEN><FONT color=3D#f5deb3 size=3D+1><FONT =
color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>sub</FONT> <FONT =
color=3D#b2dfee>template</FONT> <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#9ac0cd>$filename</FONT>, <FONT =
color=3D#9ac0cd>$fillings</FONT><FONT color=3D#00ffff>)</FONT> =3D <FONT =
color=3D#cdad00>@_</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT =
color=3D#9ac0cd>$text</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>local</FONT> $/<FONT color=3D#00ffff>;</FONT> =
<FONT color=3D#bebebe># slurp mode (undef)
</FONT> <FONT color=3D#ffa500>local</FONT> <FONT =
color=3D#9ac0cd>*F</FONT><FONT color=3D#00ffff>;</FONT> =
<FONT color=3D#bebebe># create local filehandle
</FONT> <FONT color=3D#98fb98>open</FONT><FONT =
color=3D#00ffff>(</FONT>F, <FONT color=3D#00cd00>"< =
$filename\0"</FONT><FONT color=3D#00ffff>)</FONT> || <FONT =
color=3D#ffa500>return</FONT><FONT color=3D#00ffff>;</FONT>
$text =3D <F><FONT color=3D#00ffff>;</FONT> =
<FONT color=3D#bebebe># read whole file
</FONT> <FONT color=3D#98fb98>close</FONT><FONT =
color=3D#00ffff>(</FONT>F<FONT color=3D#00ffff>);</FONT> =
<FONT color=3D#bebebe># ignore retval
</FONT> <FONT color=3D#bebebe># replace quoted words with value in =
%$fillings hash
</FONT> $text =3D~ <FONT color=3D#ff7f50>s</FONT><FONT =
color=3D#00ffff>{</FONT> %% <FONT color=3D#00ffff>(</FONT> .*? <FONT =
color=3D#00ffff>)</FONT> %% <FONT color=3D#00ffff>}</FONT>
<FONT color=3D#00ffff>{</FONT> <FONT =
color=3D#ff7f50>exists</FONT><FONT color=3D#00ffff>(</FONT> =
$fillings-><FONT color=3D#00ffff>{</FONT>$<FONT =
color=3D#cdcd00>1</FONT><FONT color=3D#00ffff>}</FONT> <FONT =
color=3D#00ffff>)</FONT>
? $fillings-><FONT =
color=3D#00ffff>{</FONT>$<FONT color=3D#cdcd00>1</FONT><FONT =
color=3D#00ffff>}</FONT>
: <FONT color=3D#00cd00>""</FONT>
<FONT color=3D#00ffff>}</FONT>gsex<FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>return</FONT> $text<FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
#<!-- simple.template for internal template() function -->
#<HTML><HEAD><TITLE>Report for %</FONT><FONT =
color=3D#cdcd00>%username</FONT><FONT =
color=3D#bebebe>%%</TITLE></HEAD>
#<BODY><H1>Report for %</FONT><FONT =
color=3D#cdcd00>%username</FONT><FONT color=3D#bebebe>%%</H1>
#%</FONT><FONT color=3D#cdcd00>%username</FONT><FONT color=3D#bebebe>%% =
logged in %</FONT><FONT color=3D#cdcd00>%count</FONT><FONT =
color=3D#bebebe>%% times, for a total of %</FONT><FONT =
color=3D#cdcd00>%total</FONT><FONT color=3D#bebebe>%% minutes.
#-----------------------------
#<!-- fancy.template for Text::Template -->
#<HTML><HEAD><TITLE>Report for =
{$user}</TITLE></HEAD>
#<BODY><H1>Report for {$user}</H1>
#{ lcfirst($user) } logged in {$count} times, for a total of</FONT><FONT =
color=3D#43cd80> </FONT><FONT color=3D#bebebe>
#{ int($total / 60) } minutes.
#-----------------------------
</FONT><FONT color=3D#cdcd00>%fields</FONT> =3D <FONT =
color=3D#00ffff>(</FONT>
<FONT color=3D#00cd00>username</FONT> =3D> =
$whats_his_name,
<FONT color=3D#00cd00>count</FONT> =3D> $login_count,
<FONT color=3D#00cd00>total</FONT> =3D> $minute_used,
<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#ff7f50>print</FONT> template<FONT =
color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"/home/httpd/templates/simple.template"</FONT>, \<FONT =
color=3D#cdcd00>%fields</FONT><FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch20/userrep">download =
the following standalone program</A></FONT>
#!/usr/bin/perl -w
# userrep1 - report duration of user logins using SQL database
</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT color=3D#b2dfee>DBI</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT color=3D#b2dfee>CGI</FONT> <FONT =
color=3D#ff7f50>qw</FONT><FONT color=3D#00ffff>(</FONT>:standard<FONT =
color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe># template() defined as in the Solution section =
above
</FONT>$user =3D param<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"username"</FONT><FONT color=3D#00ffff>)</FONT> =
<FONT color=3D#98fb98>or</FONT> <FONT =
color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"No =
username"</FONT><FONT color=3D#00ffff>;</FONT>
$dbh =3D DBI-><FONT color=3D#98fb98>connect</FONT><FONT =
color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"dbi:mysql:connections:mysql.domain.com:3306"</FONT>,
<FONT color=3D#00cd00>"connections"</FONT>, <FONT =
color=3D#00cd00>"seekritpassword"</FONT><FONT color=3D#00ffff>)</FONT> =
<FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> =
<FONT color=3D#00cd00>"Couldn't connect\n"</FONT><FONT =
color=3D#00ffff>;</FONT>
$sth =3D $dbh->prepare<FONT color=3D#00ffff>(</FONT><<<FONT =
color=3D#00cd00>"END_OF_SELECT"</FONT><FONT color=3D#00ffff>)</FONT> =
<FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> <FONT =
color=3D#00cd00>"Couldn't prepare SQL"</FONT><FONT =
color=3D#00ffff>;</FONT>
SELECT COUNT<FONT color=3D#00ffff>(</FONT>duration<FONT =
color=3D#00ffff>)</FONT>,SUM<FONT color=3D#00ffff>(</FONT>duration<FONT =
color=3D#00ffff>)</FONT><FONT color=3D#43cd80> </FONT>
FROM logins WHERE username=3D<FONT color=3D#00cd00>'$user'</FONT>
<FONT color=3D#ffa500>END</FONT>_OF_SELECT
<FONT color=3D#bebebe># this time the duration is assumed to be in =
seconds
</FONT><FONT color=3D#ffa500>if</FONT> <FONT =
color=3D#00ffff>(</FONT><FONT color=3D#cdad00>@row</FONT> =3D =
$sth->fetchrow<FONT color=3D#00ffff>())</FONT> <FONT =
color=3D#00ffff>{</FONT>
<FONT color=3D#00ffff>(</FONT>$count, $seconds<FONT =
color=3D#00ffff>)</FONT> =3D <FONT color=3D#cdad00>@row</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT> <FONT color=3D#ffa500>else</FONT> <FONT =
color=3D#00ffff>{</FONT>
<FONT color=3D#00ffff>(</FONT>$count, $seconds<FONT =
color=3D#00ffff>)</FONT> =3D <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>0</FONT>,<FONT color=3D#cdcd00>0</FONT><FONT =
color=3D#00ffff>);</FONT>
<FONT color=3D#00ffff>}</FONT><FONT color=3D#43cd80> </FONT>
$sth->finish<FONT color=3D#00ffff>();</FONT>
$dbh->disconnect<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ff7f50>print</FONT> header<FONT =
color=3D#00ffff>();</FONT>
<FONT color=3D#ff7f50>print</FONT> template<FONT =
color=3D#00ffff>(</FONT><FONT color=3D#00cd00>"report.tpl"</FONT>, <FONT =
color=3D#00ffff>{</FONT><FONT color=3D#43cd80> </FONT>
<FONT color=3D#00cd00>'username'</FONT> =3D> $user,
<FONT color=3D#00cd00>'count'</FONT> =3D> $count,
<FONT color=3D#00cd00>'total'</FONT> =3D> $total<FONT =
color=3D#43cd80> </FONT>
<FONT color=3D#00ffff>});</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>You owe: <FONT color=3D#00ffff>{</FONT>$total<FONT =
color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>The average was <FONT color=3D#00ffff>{</FONT>$count ? <FONT =
color=3D#00ffff>(</FONT>$total/$count<FONT color=3D#00ffff>)</FONT> : =
<FONT color=3D#cdcd00>0</FONT><FONT color=3D#00ffff>}</FONT>.
<FONT color=3D#bebebe>#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch20/userrep2">download=
the following standalone program</A></FONT>
#!/usr/bin/perl -w
# userrep2 - report duration of user logins using SQL database
</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>Text::Template</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT color=3D#b2dfee>DBI</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT color=3D#b2dfee>CGI</FONT> <FONT =
color=3D#ff7f50>qw</FONT><FONT color=3D#00ffff>(</FONT>:standard<FONT =
color=3D#00ffff>);</FONT>
$tmpl =3D <FONT =
color=3D#00cd00>"/home/httpd/templates/fancy.template"</FONT><FONT =
color=3D#00ffff>;</FONT>
$template =3D Text::Template->new<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>-type</FONT> =3D> <FONT =
color=3D#00cd00>"file"</FONT>, <FONT color=3D#00cd00>-source</FONT> =
=3D> $tmpl<FONT color=3D#00ffff>);</FONT>
$user =3D param<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"username"</FONT><FONT color=3D#00ffff>)</FONT> =
<FONT color=3D#98fb98>or</FONT> <FONT =
color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"No =
username"</FONT><FONT color=3D#00ffff>;</FONT>
$dbh =3D DBI-><FONT color=3D#98fb98>connect</FONT><FONT =
color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"dbi:mysql:connections:mysql.domain.com:3306"</FONT>,
<FONT color=3D#00cd00>"connections"</FONT>, <FONT =
color=3D#00cd00>"secret passwd"</FONT><FONT color=3D#00ffff>)</FONT> =
<FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> =
<FONT color=3D#00cd00>"Couldn't db connect\n"</FONT><FONT =
color=3D#00ffff>;</FONT>
$sth =3D $dbh->prepare<FONT color=3D#00ffff>(</FONT><<<FONT =
color=3D#00cd00>"END_OF_SELECT"</FONT><FONT color=3D#00ffff>)</FONT> =
<FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> <FONT =
color=3D#00cd00>"Couldn't prepare SQL"</FONT><FONT =
color=3D#00ffff>;</FONT>
SELECT COUNT<FONT color=3D#00ffff>(</FONT>duration<FONT =
color=3D#00ffff>)</FONT>,SUM<FONT color=3D#00ffff>(</FONT>duration<FONT =
color=3D#00ffff>)</FONT><FONT color=3D#43cd80> </FONT>
FROM logins WHERE username=3D<FONT color=3D#00cd00>'$user'</FONT>
<FONT color=3D#ffa500>END</FONT>_OF_SELECT
$sth->execute<FONT color=3D#00ffff>()</FONT> =
<FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> =
<FONT color=3D#00cd00>"Couldn't execute SQL"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdad00>@row</FONT> =3D $sth->fetchrow<FONT =
color=3D#00ffff>())</FONT> <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#00ffff>(</FONT>$count, $total<FONT =
color=3D#00ffff>)</FONT> =3D <FONT color=3D#cdad00>@row</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT> <FONT color=3D#ffa500>else</FONT> <FONT =
color=3D#00ffff>{</FONT>
$count =3D $total =3D <FONT color=3D#cdcd00>0</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
$sth->finish<FONT color=3D#00ffff>();</FONT>
$dbh->disconnect<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ff7f50>print</FONT> header<FONT =
color=3D#00ffff>();</FONT>
<FONT color=3D#ff7f50>print</FONT> $template->fill_in<FONT =
color=3D#00ffff>();</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT></PRE></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN1084>Mirroring Web Pages</A></H2>
<TABLE width=3D"100%" bgColor=3D#2f4f4f border=3D0>
<TBODY>
<TR>
<TD><PRE class=3DSCREEN><FONT color=3D#f5deb3 size=3D+1><FONT =
color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>LWP::Simple</FONT><FONT color=3D#00ffff>;</FONT>
mirror<FONT color=3D#00ffff>(</FONT>$URL, $local_filename<FONT =
color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT></PRE></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN1087>Creating a Robot</A></H2>
<TABLE width=3D"100%" bgColor=3D#2f4f4f border=3D0>
<TBODY>
<TR>
<TD><PRE class=3DSCREEN><FONT color=3D#f5deb3 size=3D+1><FONT =
color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>LWP::RobotUA</FONT><FONT color=3D#00ffff>;</FONT>
$ua =3D LWP::RobotUA->new<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>'websnuffler/0.1'</FONT>, <FONT =
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -