14

直到最近我才意识到 Perl 5.10 有重要的新特性,我想知道是否有人可以给我一些很好的资源来学习这些特性。我在谷歌上搜索了它们,我发现的只是一些幻灯片和一个快速概述。如果有更多的解释,某些功能(至少对我而言)会很好。

任何链接将不胜感激。

-fREW

4

6 回答 6

15

perldelta联机帮助页包含所有细节。有一个简短(但内容丰富)的幻灯片演示,Perl 5.10 适合那些不完全疯狂的人。以及关于这个问题的一个很好的PerlMonks 讨论

于 2008-10-03T19:40:03.890 回答
15

我发现这篇文章很有用。

这个更侧重于 5.10 高级正则表达式

还有A 初学者 Perl 5.10 简介

最后,这篇关于为什么应该开始使用 Perl 5.10 的精彩总结,我从中提取了以下内容:

  • 状态变量 没有更多带有外部卷曲块的范围变量,或者顽皮的 my $f if 0 技巧(后者现在是语法错误)。
  • 已定义或不再有 $x = 已定义 $y ?$y : $z,你可以改为 $x = $y // $z。
  • 正则表达式改进 dave_the_m 做了很多工作来清理内部,这为 demerphq 添加各种新的酷东西铺平了道路。
  • 较小的变量足迹 Nicholas Clark 致力于 SV、AV、HV 和其他数据结构的实现,以将它们的大小减小到恰好在 32 位架构上达到最佳状态的点
  • 较小的常量子足迹 Nicholas Clark 减小了常量子的大小(如使用常量 FOO => 2)。加载像 POSIX 这样的模块时的结果很重要。
  • 堆叠的文件测试你现在可以说 if (-e -f -x $file)。Perl 6 应该允许这样做,但他们朝不同的方向发展。那好吧。
  • 词法 $_ 允许您嵌套 $_ (不使用本地)。
  • _原型你现在可以用原型声明一个子。如果不带参数调用,则使用 $(允许您更干净地替换内置函数)。
  • x 运算符在列表中,您现在可以说 my @arr = qw(xyz) x 4。(更新:此功能在 blead 中实现后被反向移植到 5.8 代码库,这就是 Somni 注意到它在 5.8 中可用的方式。 8)。
  • switch 一个真正的 switch/given 构造,灵感来自 Perl 6
  • 智能匹配运算符 (~~) 与开关一起使用
  • 闭包改进 dave_the_m 彻底修改了闭包处理代码,以修复许多错误行为和内存泄漏。
  • 更快的 Unicode lc、uc 和 /i 在 Unicode 字符串上更快。对 UTF-8 缓存的改进。
  • 改进的排序在可能的情况下执行就地排序,而不是使用临时排序。排序函数可以递归调用:可以对树进行排序
  • 虚空上下文中的地图不再是邪恶的。只有道德上。
  • 创建匿名列表和散列时使用的操作码更少。更快的猫!
  • 污染改进 更多可能被污染的东西被标记为这样(例如 sprintf 格式)
  • $# 和 $* 已移除 远距离动作较少
  • perlcc 和 JPL 删除了这些东西只是 bug 磁铁,没有人足够关心它们。
于 2008-10-03T19:52:18.750 回答
13

Perl Tips中有一系列关于 Perl 5.10 的文章:

还有我在Perl Training Australia 的演示页面上的 What's new in Perl 5.10幻灯片,但由于它们是在 5.10 发布之前编写的,所以有些东西可能略有变化。我相信 rjbs 的Perl 5.10 是为那些不完全疯狂的人准备的,现在涵盖了我的幻灯片所使用的所有内容。

祝一切顺利,

保罗

强制性偏见披露:我写了这篇文章中提到的几乎所有资源,

于 2008-10-04T00:30:03.320 回答
7

学习 Perl,第五版及更高版本涵盖 5.10。除此之外,其他人提到的资源,包括perldelta,都相当不错。我已经写了几篇关于The Effective Perler的一些特性的文章。

最好的入门方法是选择一个有趣的功能并尝试使用它。这就是您会发现的指南作者的想法。这就是你真正应该开始学习任何语言的方式。

于 2008-10-04T02:00:31.627 回答
5

正则表达式改进包括命名捕获:看这里

于 2008-10-03T22:22:30.553 回答
3

请参阅 Ricardo Signes 的幻灯片,了解他出色的“Perl 5.10 For People Who Not All Insane”。

http://www.slideshare.net/rjbs/perl-510-for-people-who-arent-totally-insane

于 2008-10-04T01:21:30.113 回答