Perl 模块推荐
perl吧
全部回复
仅看楼主
level 12
还是来碗米饭吧
楼主
刚接手贴吧的时候就想做这样一个帖子。
目前贴吧主要面向的吧友是和我一样对Perl 了解并不深入的学习者,而Perl 的强大之处就在于各式各样的模块,这个置顶希望能够做成一个常用/好用模块的整理,不管是自带模块的介绍,还是CPAN 上的实用模块,如果您有觉得蛮好的推荐,
欢迎整理跟帖。
群策群力,知识共享。
2014年08月02日 00点08分
1
level 12
还是来碗米饭吧
楼主
LWP
这个是网页浏览比较常用的一个库,爬网页,或者POST/GET 等,可以设置协议UA 等等。
地址:
https://metacpan.org/pod/LWP
WWW::Mechanize
这个外文资料可能更多一些,相对比较老牌,评价不错,作用同上。
https://metacpan.org/pod/WWW::Mechanize
2014年08月02日 01点08分
2
level 12
还是来碗米饭吧
楼主
HTML::Parser
一个HTML 解析库,初学时用正则吐血的解析一个parse 或者parse_file 就好
https://metacpan.org/pod/HTML::Parser
HTML::Element
同样用于处理HTML 各种标签元素,而且可以把更简单的、使用列表引用形式的表示直接转换为HTML
https://metacpan.org/pod/HTML::Element
HTML::TreeBuilder
这个模块继承自上面两个,作用差不多,修改查找标签元素的属性值都蛮方便,寻找子节点返回一段列表等等,如果知道这些模块还在用正则处理HTML 真的太自虐了 ← ←
https://metacpan.org/pod/HTML::TreeBuilder
2014年08月02日 01点08分
3
ycc869
有使用过visio 模块吗
2016年03月10日 07点03分
level 12
还是来碗米饭吧
楼主
再说一下Perl 自带的文件处理模块吧
File::Basename
这个恐怕是初学Perl 最早接触的一个模块,返回basename 和dirname
File::Find
这个提供find 函数,用户获取目录下所有的子文件(注意这其中也包含了子目录)
File::Stat
获取文件的状态,每个字段的值代表含义可以看下perldoc,CPAN 上有这个模块的封装,名字是File::stat
File::Copy
如其名,移动或者赋值文件,提供cp 和mv 两个酷似Linux 指令的接口
File::Path
主要用于目录操作,新建目录(效果类似于mkdir -p 指令),删除目录等
File::Spec
这个用于提供一些文件名的操作,例如catfile 连接path 的各个部分,或者返回各个平台的特殊目录,例如rootdir、devnull、tmpdir 等
FileHandle
提供文件的对象化操作,例如常用的close $fh 可以变成$fh->close
2014年08月02日 01点08分
4
level 12
还是来碗米饭吧
楼主
一些自带的处理时间的模块
Time::Piece
记不清localtime 的字段,觉得乱七八糟?$date->year 的形式你不会记错
Time::Seconds
继承自Time::Piece,给你一个时间点,若干天后是什么日期,若小时前又是什么日期?内部已做好加减法的重载,一个简单的算式告诉你答案。这个模块时间计算是非常精确的。
Time::Local
给定年月日时分秒,返回1970/1 以来的总秒数。请看perldoc,否则你会栽在年份传参上。
Net::Time
从服务器得到时间
2014年08月02日 01点08分
5
level 12
还是来碗米饭吧
楼主
再说一下Perl 自带的参数处理模块
参数的处理,长短开关形式都有一个规范,所以最好不要自己处理参数,弄不好写的就不在规范之内,这个各种语言都有自己的处理方法,C 的getopt/getopt_long,C++ Boost 的Options 库,shell 的getopts 函数和getopt 指令……
Perl 中的模块是
Getopt::Std
用于短开关的处理,指定开关是否跟参数等等,结果放在$opt_* 标量或者给定的散列引用中
Getopt::Long
这个功能要强大很多,建议使用。提供短、长开关的完善处理,可以指定长开关短化的名字,指定后跟参数的方式等等,结果放在给定的数组引用中。注意Getopt::Long::GetOptions 中,默认是不区分大小写的,如果区分的话需要向下面一样use 时指定:config no_ignore_case,这应该是一个多做之过。
use Getopt::Long qw (GetOptions :config no_ignore_case);
2014年08月02日 01点08分
6
1