以前写的,代码中的rss源有些不可用了,你可以自己找喜欢的rss源,现在很多站点都提供rss源的。
----------------------------------------------------------------
+=用Perl写你自己的IRC Robot=+
---------------------------------
http://www.s8s8.nethttp://www.perlchina.orgAuthor: cnhackTNT
Date: 3/6/2004 2:41 PM
---------------------------------
我想这应该是个有趣的事情,既然是有趣的事情,那么应该把它拿出来让更多的人从中找到乐趣。Perl之所以有如此多的支持者,也正是因为这种共享将乐趣最大限度的扩大化了。所以,也希望当你碰到有趣的事情的时候,能把它告诉我们。:)
$Chapter_1: 了解IRC和IRC Robot、RSS
$sec_1: IRC和IRC Robot
IRC是Internet Relay Chat的缩写,通过IRC协议,大家可以连到一台或者多台IRC服务器上进行聊天,他给你的直观印象就是和传统的Web聊天很像,但是IRC的功能多很多。
(国内有很多的IRC服务器,比如irc.sunnet.org,irc.pchome.org。我们的perlchina也搭建了自己的IRC服务器irc.perlchina.org
你可以下载mirc这个IRC聊天工具来登陆irc服务器,然后便可以选择自己感兴趣的频道加入讨论。)
IRC Robot简写为IRCbot。顾名思义,它是一个由程序编写的IRC机器人,它可以像你一样登陆事先指定的IRC服务器,然后等待命令或者干其他的预先设定好的事情。你可以通过IRC给他下达指令,比如询问它今天的天气情况啊,要它看看自己管理的远程系统是不是正常啊,闲暇时可以让他给你挖掘点新闻过来看看,甚至有些黑客编写了一些通过IRC来进行控制的木马。
其实,这都是IRCbot。
$sec_2:RSS
RSS?什么是RSS?RSS=Really Simple Syndication 或者 RDF Site Summary 或者Rich Site Summary。
RSS是随着博客的兴起而逐渐兴起的,它是站点用来和其他站点之间共享内容的简易方式,通常我们把它称作“聚合内容”,你可以简单的把它当作是一个格式化了的站点内容列表。
有了RSS我们可以轻松的将目的站点的内容抓过来。由于RSS是一个标准的XML文档,所以我们可以用Perl的XML::Parser模块来对它进行解析,但在这个例子中,我们不直接使用XML::Parser,而是用一个专门针对RSS的模块XML::RSS,你可以从CPAN找到它,下载它,然后安装它。
$Chapter_2: 准备工作
(你肯定已经安装了perl对吧?)
首先我们要安装XML::RSS模块。
如果你在UNIX或者Linux系统下,可以通过perl –MCPAN –e “install XML::RSS”命令来安装,如果你在Windows下,请先到微软或者perlchina的论坛上找到nmake.exe,下载它放到一个目录中,然后在第一次通过perl –MCPAN –e shell命令进行初始化的时候指定nmake.exe的路径。(关于安装Perl模块,如果有不懂的可以查看perl的文档how to install module from cpan或者到perlchina的论坛上询问)
接下来,我们需要下载一个码表文件gb2312.enc(53k),你可以从下面的地址的到它:
http://eaa13.dns0755.net/~atzone/source/gb2312.enc下载后,将它放到‘perlpath(你的perl安装目录)/lib/XML/Parser/Encoding’目录下,这样你的XML::Parser就可以分析包含中文的XML文档了(XML::RSS通过XML::Parser来对RSS文档进行解析)。
现在,我们从如下地址下载Net::IRC模块:
http://ppm.activestate.com/PPMPackages/zip...ows/Net-IRC.zip解压后用Activestate的ppm进行安装。
OK,准备完毕。
$Chapter_3: 编写IRCbot程序
我们要通过这个IRCbot来攫取一些站点上的新闻标题,比如我向聊天室或者这个ircbot发送”grab slashdot”命令的时候它要给我攫取slashdot的新闻标题。
当然还有其他一些命令,比如当我发送的消息包含这个ircbot在irc中的昵称的时候,它要
主动和我联系,并说“Do u want read news or blogs?type 'list\ for available rss seeds.”。
当我输入list命令,它要返回给我一个事先定义的rss文档列表
然后我输入grab <rss文档名>,它要给我抓取新闻.
等等.