Posts with the tag 'perl'

error – expat.h: No such file or directory

While trying to get a perl utility working, I had to install a bunch of prerequisite perl modules on my CentOS 5 VPS. One requirement was XML::Parser. However when I tried to install it like so:
[root@localhost]perl -MCPAN -e shell
cpan> install XML::Parser
I received errors with the below being the most relevent bit…
cp Expat.pm ../blib/lib/XML/Parser/Expat.pm
/usr/bin/perl [...]

1 comment 二月 12th, 2010

cpan 更新 中国镜像 加速安装模块[zt]

使用cpan,大概进去后,help一下就会用。
但是今天想安装Chart::OFC的时候还是碰到问题。
不知道为什么我的一台老的rhel3的系统里的urllist竟然是ftp://cpan.cse.msu.edu/,半天一个i Chart::OFC的命令也没有反应,速度太慢了,后来查了一下那个大学是密歇根州立大学,好偏远,于是必须更新一下urllist,但是我又忘了怎么更新了。
好在网上找到个帖子(http://mail.pm.org/pipermail/china-pm/2007-August/001002.html)告诉了我,转到如下:
你无需手工修改 /etc/perl/CPAN/Config.pm 来改变 CPAN 镜像地址的,以ROOT身
份运行:
# perl -MCPAN -e shell
cpan> o conf urllist unshift  http://www.perl.com/CPAN/
cpan> o conf commit
在search.cpan.org也看到有两个中国的镜像,考虑到稳定性,还是使用perl.com的
还有一点是在用cpan的时候,因为模块安装时默认的make  test不成功,make install就不会去做,但是因为某些情况并不需要这样,这时候,可以force install DBD::mysql
============================================================
配置http_proxy的方法:
o conf http_proxy http://proxy:8080
============================================================
有时候,可能几个不重要的make test中的测试项导致make test失败,这时候就用强制安装:
force install Test::WWW::Mechanize::Catalyst

Add comment 一月 7th, 2010

Perl 的 html 解析模块

HTML::TreeBuilder
这个解析模块使用了强大的 HTML::Element 模块。解析时,HTML::TreeBuilder模块把整个 html 文档转换成了 perl 的数据结构,可以进行任意的操作。
使用时先创建一个 HTML::TreeBuilder 对象。
use Data::Dumper qw(Dumper);
$Data::Dumper::Indent = 1;
use HTML::TreeBuilder;
my $tree = new HTML::TreeBuilder;
直接向 HTML::TreeBuilder 传递文件好像会把中文转换成 unicode 的字符,所以一般传递文件句柄。而且传递的字符串或者句柄一般要先确保是 utf8 字符串才行,不然会有一个warning:
Parsing of undecoded UTF-8 will give garbage when decoding entities at /home/ywb/temp/t.pl line 16, line 5.
解析文件和解析字符串的区别仅仅是前者是使用 parse_file 函数,而后者使用parse 函数。下面以解析文件句柄的例子:
binmode DATA, “utf8″;
$tree->parse_file(\*DATA);
print Dumper($tree), “\n”;
__DATA__

x
y

1
2

要提取出表格中的内容可以这样:
foreach my $row ( $tree->find_by_tag_name(“tr”) ) {
foreach my $cell [...]

Add comment 十二月 29th, 2009

使用perl脚本抓取网页总结

使用perl实现网页抓取,对网络蜘蛛的初步尝试。
环境
windows xp,IIS,perl 5.88,CMD
使用到的模块
use LWP::Simple; 用来得到网页
use HTML::HeadParser; 对部分进行解析,得到标题、编码、关键词等
use HTML::FormatText::WithLinks; 将html变成文本可读样式
use Encode qw/encode decode/; 解决不同网页的编码问题
需求
在CMD中调试,最后IIS中调用,解析结果要保存到数据库中,数据库中采用utf8编码,解析的网页为gb2312编码,所以理清编码特别重要。
关于编码首先应该弄清楚的概念

Perl字符串是使用utf8编码的,也就是说读进perl的字符的编码格式都是utf8;
读取输入时,perl会自动将其转换为urf8,输出时的编码依据运行环境已经上下游环境。

乱码问题
脚本使用ANSI编码,只是数据库的内容使用decode,结果内容有个别字符乱码,是HTML::FormatText::WithLinks; 将html变成文本可读样式时出现问题。可以算是一个bug
解决方法
脚本实用utf8编码,得到的网页首先进行decode,再进行其他的处理,问题解决,但在cmd下调试的时候,会有“Wide character in print”警告信息,因为环境是gbk,输出urt8编码是会报警,使用encode(”euc-cn”, $value),对输出进行转义,可以解决这个问题,而网上说的加 use encoding “utf-8″; 不能解决这个问题。
其他需要注意的问题

调用匹配的内容再去匹配其他内容时,注意对该内容的元字符进行转义;
入库的内容也要进行转义;

遗留问题:IIS对perl的支持,配置没有问题,增加了对.pl、.cgi的定义,测试时发现在IE下正常,在firefox下弹出保存文件的对话框,但是以前的.pl正常。估计于haed的输出有关系,还有待于进一步的测试。
encode、decode函数说明
encode函数是用来编码Perl字符串的。它将Perl字符串中的字符用指定的编码格式编码,最终转化为字节流的形式,因此和Perl处理环境之外的事物打交道经常需要它。
其格式很简单:
$octets = encode(ENCODING, $string [, CHECK])
$string:  Perl字符串
encoding: 是给定的编码方式
$octets:  是编码之后的字节流
check:   表示转换时如何处理畸变字符(也就是Perl认不出来的字符)。一般不需使用
decode函数则是用来解码字节流的。它按照你给出的编码格式解释给定的字节流,将其转化为使用utf8编码的Perl字符串,一般来说从终端或者文件取得的文本数据都应该用decode转换为Perl字符串的形式。它的格式为:
$string = decode(ENCODING, $octets [, CHECK])
$string、ENCODING、$octets和CHECK的含义同上。
明白如何使用该函数的例子:
use Encode;
$dat=”测试文本”;
$str=decode(“gb2312″,$dat);
@chars=split //,$str;
foreach $char (@chars) {
print encode(“gb2312″,$char),”\n”;
}

Add comment 十二月 29th, 2009

perl–模块安装方法和常用模块

CPAN(Comprehensive Perl Archive Network)是internet上Perl模块最大的集散地,包含了现今公布的几乎所有的perl模块。网址:http://www.cpan.org/ 
而http://search.cpan.org/,可以查找任何一个模块并提供下载
Linux/Unix—perl模块的安装方法
Linux/Unix下安装Perl模块有两种方法:手工安装和自动安装。第一种方法是从CPAN上下载您需要的模块,手工编译、安装。第二种方法是联上internet,使用一个叫做CPAN的模块自动完成下载、编译、安装的全过程。
A. 手工安装
从CPAN下载了安装模块的压缩文件,假设放在/usr/local/src(一般需要编译安装的软件,都放在此目录下安装)。 
1. cd /usr/local/src   
2. tar xvzf x.x.tar.gz   
3. cd x.x  
4. perl Makefile.PL (生成makefile)
5. make (建立模块)&& make test (测试模块)
如果测试结果报告“all test ok”,您就可以放心地安装编译好的模块了。 
6. make install 
注意:上述步骤适合于Linux/Unix下绝大多数的Perl模块。可能还有少数模块的安装方法略有差别,安装前,先看一下目录里的README或INSTALL。
B. 自动安装: 
安装前需要先联上线,并且您需要取得root权限。 
perl -MCPAN -e shell 
初次运行CPAN时需要做一些设置,如果您的机器是直接与internet相联(拨号上网、专线,etc.),那么一路回车就行了,只需要在最后选一个离您最近的CPAN镜像站点。 
cpan>h (获得帮助) 
cpan>m (列出CPAN上所有模块的列表) 
cpan>install module_name (自动完成从下载到安装的全过程。) 
cpan>q (安装完,后退出)
常用模块:
(1) Net::FTP
(2) Net::Telnet
(3) LWP::Simple, get()
(4) Expect
(5) XML::Simple, XMLin()
(6) Data::Dumper, Dumper()
(7) IO::Socket
(8) Date::Manip, DateCalc(), UnixDate()
(9) Date::Manip, Date_Cmp()
(10) File::Find, [...]

Add comment 十二月 29th, 2009

perl中使用递归遍历目录[zt]

perl自带的函数远不及php多,但功能确实很强大,实现起来也只有几行代码。
perl中的目录操作函数有:
1。mkdir 函数
调用语法:mkdir (dirname, permisions)
dirname:将要创建的目录名,可以为字符串或表达式。
permisions:八进制数,指定目录的访问权限。其值和意义如下:
权限值 权限
4000 [...]

Add comment 十二月 28th, 2009

1 of 11

 

2010年三月
« 二    
1234567
891011121314
15161718192021
22232425262728
293031  

分类目录

标签

书签 优化 参数 命令 啪嗒砰 域名 备份 字体 安装 导入 导出 扩展 换行 文字 正则 爬虫 解决办法 路径 道具 错误 镜像 19楼 Apache awk AWstats CentOS CPAN EditPlus Firefox GD GeoIP Google IBM Linux mysql OUTLOOK Patapon perl photoshop PHP profile rsync sed Shell Thunderbird

最近文章

最近评论

文章索引模板

功能

SEO Powered by Platinum SEO from Techblissonline