<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="Perl 学习手札 - 附录B:常用的五十个CPAN模块 - Perl.11138.Net 镜像" />
<link rel="stylesheet" href="word.css" type="text/css" />
<title>Perl 学习手札 - 附录B:常用的五十个CPAN模块 - Perl.11138.Net 镜像</title>
<link rel="start" href="index.html" title="Home" />
<link rel="prev" href="app_a.html" title="附录A. 习题解答" />
</head>
<body class="body class="layout-one-column individual-entry-archive" ">
<div id="container">
<div id="container-inner" class="pkg">
<div id="alpha">
<div id="alpha-inner" class="pkg">
<p class="content-nav">
<a href="app_a.html">« 附录A. 习题解答</a> |
<a href="index.html">Perl 学习手札目录</a>
</p>
<h2 id="archive-title">附录B:常用的五十个CPAN模块</h2>
<div class="entry" id="entry-172">
<div class="entry-content">
<div class="entry-body">
<blockquote class="cc-by-nc-sa">
作者:<a href="http://perl.hcchien.org/">简信昌</a> <br />
<a href="http://creativecommons.org/licenses/by-nc-sa/2.0/tw/legalcode" title="Creative Commons版权署名协议">授权声明</a>:署名-非商业性-相同方式分享 Creative Commons 授权 <br>
<a class="permalink" href="http://perl.hcchien.org/app_b.html">http://perl.hcchien.org/app_b.html</a>
</blockquote>
<blockquote>
附录B:常用的五十个CPAN模块<br />
<br />
这个附录的内容原来是来自于Autrijus Tang(唐宗汉)的“CPAN模块数来宝”,正如我们说的,使用Perl而不使用CPAN实在是无法感觉到那种惊人的集结力量。可是CPAN模块数量之多,要能从中得到一个适合自己的模块,也有相当的难度。因此能够以一般最常使用的模块来作为熟悉CPAN的开始,确实是美事一桩。而这份投影片曾经在许多地方发表过,包括台北的“Perl/PHP/Python Party”、德国的“German Perl Workshop”,以及美国的“Open Source Conference 2003”发表过,也都获得很好的回响。所以我就决定把这一份投影片改写为这本书的附录。<br />
<br />
CPANPLUS<br />
<br />
我们前面提过好几次关于CPANPLUS,因为这个模块很可能在接下来的Perl版本中,将接替CPAN成为默认的模块安装管理工具。<br />
<br />
% cpanp<br />
a # 依作者名称搜寻模块 <br />
m # 依模块名称搜寻模块<br />
f # 列出作者的所有套件 <br />
o # 列出可供更新的模块<br />
i # 安装 <br />
t # 测试 <br />
u # 移除 <br />
d # 下载<br />
l # 详细信息 <br />
r # 显示README <br />
c # 品管报告 <br />
z # 解开模块<br />
<br />
LWP::Simple<br />
<br />
利用LWP::Simple,可以很容易的让我们在Perl程序中取得某个网页的内容,这经常被拿来运用于资料的收集。<br />
<br />
$page = get("http://www.cpan.org/"); # 取得网页<br />
getprint($url); # 印出内容<br />
getstore($url, $file); # 存入文件<br />
head($url) # 取得标头<br />
mirror($url, $file); # 映射网址<br />
<br />
WWW::Mechanize<br />
<br />
如果你每天都要进行相同的步骤去登入某个网站,或填入某些资料取得相关的信息,那么你可以可以透过WWW::Mechanize来请Perl帮忙。他可以像一个机器人般的,帮你进行这些繁杂的手续,就像你的代理人一般。<br />
<br />
my $agent = WWW::Mechanize->new(); # 建立物件<br />
$agent->get($url); # 到达网站<br />
$agent->follow($link); # 按下链结<br />
$agent->form($number); # 进入表单<br />
$agent->field($name, $value); # 输入资料<br />
$agent->click($button); # 按下按钮<br />
$agent->back(); # 回上一页<br />
$agent->add_header($name => $value); # 加入标头<br />
print $agent->{content}; # 印出结果<br />
<br />
HTML::Mason<br />
<br />
我们在正文中也提过这个模块,他可以让我们简单的写出动态的网站,就像你在写HTML一样。如果你熟悉PHP,你应该也会很习惯这个方式,当然,他其实是非常强力的内嵌式模板系统。<br />
<br />
<%perl><br />
my $noun = '全世界'; # 内嵌程序码<br />
my @time = split /[\s:]/, localtime;<br />
</%perl><br />
欢迎<% $noun %>, # 安插运算式<br />
% if ( $time[3] < 12 ) { # 流程控制<br />
早安!<br />
% } else {<br />
晚安!<br />
% }<br />
<br />
Template<br />
<br />
另一个在Perl领域中常用的模板系统,他可以很方便的让你切开页面设计跟程序码,让两者的相关性减到最低。也让所有人都可以在不互相干扰的情况下发挥比较大的效率。<br />
<br />
[% INCLUDE header title = 'This is an HTML example' %]<br />
<h1>Some Interesting Links</h1><br />
[% webpages = [ # 内嵌程序码<br />
{ url => 'http://foo.org', title => 'The Foo Organsiation' }<br />
{ url => 'http://bar.org', title => 'The Bar Organsiation' }<br />
] %]<br />
<ul><br />
[% FOREACH link = webpages %] # 流程控制<br />
<li><a href="[% link.url %]">[% link.title %]</a> # 取得元素<br />
[% END %]<br />
</ul><br />
[% INCLUDE footer %] # 套用元件<br />
<br />
XML::RSS<br />
<br />
要怎么处理RSS的文件?XML::RSS是一个非常方便的工具。你可以透过简单的处理,产生出一个标准的RSS。<br />
<br />
my $rss = XML::RSS->new(); # 建立物件<br />
$rss->parse($string); # 剖析字符串<br />
foreach my $item (@{$rss->{'items'}}) { # 处理元素<br />
print "title: $item->{'title'}\n";<br />
print "link: $item->{'link'}\n\n";<br />
}<br />
$rss->add_module( # 自订模块<br />
prefix => 'content', # 全文模块<br />
uri => 'http://purl.org/my/rss/module/',<br />
);<br />
$rss->add_item( # 新增元素<br />
title => $title,<br />
link => $link,<br />
content => { encoded => $text },<br />
);<br />
$rss->{output} = '1.0'; # 转换版本<br />
print $rss->as_string; # 印出 XML<br />
<br />
DBI<br />
<br />
DBI几乎是现在写程序必备的模块之一了,当然他本身也已经是一种标准。因此了解DBI的使用方式显然是一个重要的课题。<br />
<br />
my $dbh = DBI->connect( # 连结数据库<br />
"DBI:mysql:database=test;host=localhost",<br />
"Melody", "Nelson", {'RaiseError' => 1}<br />
);<br />
eval { $dbh->do("DROP TABLE foo") }; # 卸除数据库<br />
# 建立数据库<br />
$dbh->do("CREATE TABLE foo (id INTEGER, name VARCHAR(20))");<br />
# 插入资料列(用 quote 进行引括)<br />
$dbh->do("INSERT INTO foo VALUES (1, " . $dbh->quote("Tim") . ")");<br />
# 插入资料列(用 ? 进行引括)<br />
$dbh->do("INSERT INTO foo VALUES (?, ?)", undef, 2, "Jochen");<br />
my $sth = $dbh->prepare("SELECT * FROM foo"); # 准备选取资料列<br />
$sth->execute; # 执行选取<br />
while (my $ref = $sth->fetchrow_hashref()) { # 选取成散列<br />
print "Found a row: id = $ref->{'id'}, name = $ref->{'name'}\n";<br />
}<br />
$sth->finish; # 结束查询<br />
$dbh->disconnect; # 结束数据库连线<br />
<br />
YAML<br />
<br />
我们都知道在Perl中有数组,散列,或数组的数组,散列的散列,或散列的数组,散列的散列......,这么复杂的数据结构,透过YAML可以让我们清楚的一目了然。这样才不会让程序设计师到最后自己都搞不清楚资料的结构到底是什么样了。<br />
<br />
# 将复杂的数据结构倾印成跨平台、跨语言、简洁易读的文件格式<br />
print Dump { 'P3P' => {<br />
'Date' => [ '2003-02-07T10:00:00', '2003-02-09T12:00:00' ],<br />
'Entry Fee' => 'USD$6',<br />
'Hosted-By' => 'Taipei Perl Mongers',<br />
'URL' => \('http://p3p.elixus.org/'),<br />
} };<br />
<br />
# 结果如�
没有合适的资源?快使用搜索试试~ 我知道了~
perl学习手札中文
共22个文件
html:21个
css:1个
需积分: 9 3 下载量 145 浏览量
2009-02-28
01:45:35
上传
评论
收藏 191KB RAR 举报
温馨提示
perl学习手札,共同学习,共同进步。希望你能很快掌握perl。
资源推荐
资源详情
资源评论
收起资源包目录
perl学习手札(简体中文)_简信昌.rar (22个子文件)
ch02.html 29KB
app_b.html 38KB
ch07.html 17KB
ch10.html 28KB
ch05.html 23KB
ch01.html 12KB
ch12.html 25KB
about_toc.html 3KB
ch06.html 20KB
ch14.html 26KB
ch15.html 29KB
ch03.html 25KB
ch17.html 27KB
ch11.html 23KB
ch04.html 25KB
ch16.html 32KB
index.html 6KB
ch08.html 27KB
ch13.html 28KB
word.css 2KB
app_a.html 28KB
ch09.html 20KB
共 22 条
- 1
资源评论
diro2008
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功