未被充分利用的 CPAN 模块

分类: 计算机技术 | 由 zhang发布于

Perl的悠久历史也有不好的一面。对一个Perl新手来说,有许多在线教程和代码范例可用当然是一件好事;与此同时,因为那些教程是早就写好的,他们有时就会遗漏在此之后出现的很多有用的代码。

下面是一些未被Perl新手充分利用的模块(至少在我看来)。

这些模块有很多用处。最明显的就是,这些模块可以让你写/调试更少的代码,写成的代码对你同事也更清晰,并且大多数情况下,这些模块比你手工弄的代码表现更出色。

列表操作

有两个与列表相关的模块你应该熟悉——List::Util 和它的姊妹模块 List::MoreUtils

你需要打乱数组的值?不要重复发明轮子,用List::Util 中的 shuffle 函数就好了。


use strict;

use warnings;

use List::Util qw( shuffle );

my @array = qw( 1 2 3 4 5 6 7 8 9 );

my @shuffled = shuffle( @array );



想获得只含有唯一值的列表?你可以使用Perl Cookbook中提供的方法,或者更简单,你可以用List::MoreUtils 中提供的uniq() 函数,就像这样:


use strict;

use warnings;

use List::MoreUtils qw( uniq );

my @array = qw( 1 1 2 2 3 3 4 4 5 5 );

my @unique_values = uniq( @array );



值得一提的是,List::MoreUtils是用C语言实现的,所以它比纯Perl的实现更快。我曾见此模块改进某大型web应用5%的性能,因为它每个页面需要将多个列表唯一化。

你一定要再看看这两个模块里的其它的函数,如any(), all(), first(), max(),等等。你需要从CPAN上安装List::MoreUtils 模块,而List::Util 是Perl的核心的一部分。

合并Hash

你可以用最简单的方式:


my %merged_hash = ( %hash_one, %hash_two );



有时你需要更强点的功能,那就用 Hash::Merge 吧。 它给了你很多方式来处理不一致的键值,基于左右顺序或者存储方法。 或者你可以控制你的数据是否被克隆。我发现这东西在将命令行的参数与配置文件合并的时候特有用。

关于配置选项和文件……

跟我重复一遍: 我不自己写配置解析代码。 我也不发明自己的配置文件格式。除非有特别好的理由,我不会自己解析命令行的参数。

为什么在代码的最无聊的部分浪费你的时间?使用已有的模块和配置文件格式就是了!这将剩下你不少时间和调试的麻烦,也会让你的用户更容易熟悉你的配置文件语法。

我强烈建议你用Getopt::Long 来处理命令行参数。你可能需要点时间来习惯这个模块,但是一旦当你突破最初的学习曲线,你就会发现当初自己手工处理这些东西是多么傻!

如果你喜欢Apache风格的配置文件(谁不?呵呵),那么就用Config::General ,就可将你的配置处理代码缩减成一个use语句和几行代码。你也许更喜欢.INI风格的配置文件,那么就试试Config::Tiny吧。(完)
原文:http://blog.revsys.com/2007/09/under-used-cpan.html


整个 Yo2 上的相关文章:

最近阅读过此文章的网友:
Tags : ,
Trackback url : u can trackback from your own site

2 条评论 :

  1. biginnerbiginner 评论道:

    Very good!

    But I can not express using chinese now for having no permission to install Chinese operating system.

  2. doiobdoiob 评论道:

    受教了,谢谢!

发表看法