第十二章 更大的世界

Perl的资源丰富,某些有用功能已经集成在核心库中了,更多的则在CPAN上。成熟的Perl程序员懂得如何利用好这些资源。

有用的核心模块

Perl语言在设计的过程中一直致力于将实用性和扩展性更好的结合。Perl 5在之前的基础上进行了很大的扩展并且创造了CPAN,但同时它也保留了对之前代码的兼容。(大部分Perl 1的代码能追到1987年 )

现在我们所认为的好代码和1987年时认为的好代码非常不一样了,有部分原因是因为核心库变了。

编译指示strict

该编译指示允许你禁止(或启用)某些语言行为,这些行为虽然功能强大但也可能被滥用,所以需要这么样一个开关来进行控制。

strict模式下禁止符号引用、要求变量声明和禁止使用未声明的裸字。虽然有时候符号引用是必要的,但隐患巨大,如某些情况下,可通过符号变量操纵私有数据。

要求变量声明则有助于检查变量名的拼写错误,同时鼓励使用正确的词法作用域。如果变量都使用my或our来声明,那么就很容易就能看出来你期望的作用域。

strict编译指示的作用域为词法作用域,可通过perldoc strict了解更多细节。

编译指示warnings

该编译指示控制着各种告警行为(启用或禁止)。如对下列行为发出警告:字符串化undef值或对变量使用了错误类型的操作符。

通常,有警告信息产生说明Perl无法理解你的意思而不得不去猜测你的意图,虽然Perl通常会猜测正确,但是消除歧义才能确保你的程序总是会正确运行。

warnings编译指示的作用域为词法作用域,可通过perldoc perllexwarn和perldoc warnings了解更多细节。

如果你同时启用了warnings和diagnostics这2个编译指示,则将还获得每条警告的调试信息,具体请参考perldoc perldiag。这些信息对于学习Perl非常有帮助,但是在部署到实际应用时应该关闭diagnostics,因为大量的调试信息会写爆你的日志文件或导致信息泄露。

编译指示autodie

之前介绍过,如果你在使用open时忘记了检查返回值,如果操作失败那么后续你就是在操作一个关闭着的句柄---更糟的是如果要写句柄则会丢失数据。编译指示autodie就是来解救你的,假设你这样写:

use autodie;
open my $fh, '>', $file;

若open操作失败Perl就会抛出异常。

对于失败的系统调用,最合适的处理方式就是抛出异常,考虑到系统调用的普遍存在,这个编译指示能帮助你少写很多的相似代码哦。

有时候也可能需要仅对部分系统调用启用autodie,那么去看看perldoc autodie吧。

Perl版本号

在代码中指定的Perl的版本号有助于表达你的意图,同时也能方便对代码使用工具。比如你已经在Perl 5.18下测试过你的代码了,并且这段代码只用到了Perl 5.18中的特性,就可以这样写:

use 5.018;

更大的世界

CPAN上也有大量有用的模块。其中Task::Kensho就介绍了不少CPAN上最好用的分发包。当你要解决新问题时,可以先看看里面介绍的那些分发包是否能帮得上你。

这里我们也简单介绍一些:

  • 操作数据库,可以使用DBI模块
  • 轻量级、单个文件的数据库,可以使用DBD::SQLite模块
  • 管理你的数据库纲要(schema),可以使用Sqitch
  • 将数据库实体表示为对象,使用DBIx::Class
  • 基础的WEB编程,使用Plack
  • 需要强大的WEB框架,试试Mojolicious、Dancer或Catalyst
  • 处理结构化数据文件,用Text::CSV_XS (或Text::CSV)
  • 要管理应用的模块安装,用Carton
  • 需要处理数字类数据,用PDL
  • 处理图片,用Imager
  • 操作共享库,用FFI::Platypus
  • 从XML文件提取数据,用XML::Rabbit
  • 让代码变得更整洁,用Perl::Tidy
  • 需要比strict和warnings更高级的代码分析,用Perl::Critic

CPAN每天都在发展,去看看最近又上传了哪些新东西:http://search.cpan.org/recent

用Perl来思考

创新不会停止,学习也将继续。Modern Perl介绍了最优秀的Perl程序员所使用的方法和技术,然而他们的方法和技术会不断发展。2015年伟大的东西,在五年之前可能是无法想象的,但另一方面,即使是2020年(甚至之后)伟大的东西也可能源自于某个Perl骇客现在脑中的一丝念想。

你可以在社区中学习、可以阅读核心模块和CPAN模块的文档、还可以通过实践来发现如何让Perl为你工作及工作得更好。

你有机会去塑造未来!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容

  • 程序质量、程序BUG、程序的维护和扩展、多个程序员协同,一个好的程序需要平衡这一切。一个漂亮但是不解决问题的程序是...
    可以没名字吗阅读 665评论 0 4
  • 标题: Rakudo and NQP Internals子标题: The guts tormented imple...
    焉知非鱼阅读 1,338评论 1 3
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,166评论 11 349
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,579评论 18 139
  • 很喜欢杨宗纬的一首歌——《我变了 我没变》。第一次听到这首歌是在一个小静吧里,那时我在那里做服务员,一位半醉半醒的...
    张漂亮小姐姐阅读 394评论 0 2