免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3119 | 回复: 14

只是想开拓下眼界 [复制链接]

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2016-11-23 23:52 |显示全部楼层
由于英文不行, 所以关于 Perl 的消息一直孤陋寡闻.
有关 Perl 5.24 目前有什么非常棒的新特性, 如果哪位大神有了解 给科普一下. 谢谢大家...

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
发表于 2016-11-24 09:42 |显示全部楼层
  1. Incompatible Changes
  2. The autoderef feature has been removed
  3. The experimental autoderef feature (which allowed calling push, pop, shift, unshift, splice, keys, values, and each on a scalar argument) has been deemed unsuccessful. It has now been removed; trying to use the feature (or to disable the experimental::autoderef warning it previously triggered) now yields an exception.
  4. Lexical $_ has been removed
  5. my $_ was introduced in Perl 5.10, and subsequently caused much confusion with no obvious solution. In Perl 5.18.0, it was made experimental on the theory that it would either be removed or redesigned in a less confusing (but backward-incompatible) way. Over the following years, no alternatives were proposed. The feature has now been removed and will fail to compile.
复制代码

感觉值得注意的就这两条。
第一条我感觉很遗憾,自动解引用十分方便,既然取消了,那么就要多写一些东西了:

  1. push $ref_array, $scalar;
  2. # push @{$ref_array}, $scalar;
复制代码

第二条就是默认变量 $_, 再不能 my 了,反正我尽量不用 Perl 的这个看似让代码更简洁的特性,我认为这让代码第一眼看上去很难懂,需要大脑解析器进行一次参数插入。

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
发表于 2016-11-24 09:44 |显示全部楼层
本帖最后由 104359176 于 2016-11-24 09:50 编辑

Hashbang redirection to Perl 6
Previously perl would redirect to another interpreter if it found a hashbang path unless the path contains "perl" (see perlrun). To improve compatability with Perl 6 this behavior has been extended to also redirect if "perl" is followed by "6".

Larray Wall 看样对 Perl5 社区还是绝对的掌控,竟然要用 Perl6 的架构来重写 Perl5 部分的解释器,Perl6 太慢了,Perl5 已经非常稳定,而且非常快,这样会让 perl5 的解析慢上许多,不过针对长远来说,融合 Perl5, Perl6 社区的资源很好,Perl6 就像一个泥潭,一旦陷进去,不管投入多少精力,都难以取得显著的成效,因为 Perl6 太复杂了,语法冗余度高的令人发指。

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2016-11-24 09:50 |显示全部楼层
回复 2# 104359176
1.> 一个有了又没
2.> 一个又作废了 (5.17 my $_ 的问题 zhlong8 版主大神以前已经说过了)

大神, 您能不能再来点.  

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
发表于 2016-11-24 09:56 |显示全部楼层
我个人的建议:如果要好好学习 Perl5, 最好学习 Modern Perl, 这是 Perl5 的一个子集,这些特性是 Perl 语言的精华,针对以后 Perl5 的发展趋势,Perl5 还要废弃许多以前的特性。这对你以后学习其他语言有好处,否则,你学习的越深入,Perl5 特有的语言特性会让你的思维方式“中毒"越深,当你学习别的语言的时候,这些思维方式会让你很难进行思维转换,痛苦的很。

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2016-11-24 10:07 |显示全部楼层
回复 5# 104359176
大神, 您讲的这一点对我以后的学习非常有帮助. 但只是给了一个概括, 稍微具体点? (您随意)

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
发表于 2016-11-24 10:42 |显示全部楼层
回复 6# sunzhiguolu

尝试自己看英文资料吧,没你想的那么难。

论坛徽章:
0
发表于 2016-11-24 11:52 |显示全部楼层
回复 5# 104359176

很赞同啊。

论坛徽章:
0
发表于 2016-11-26 15:43 |显示全部楼层
104359176 发表于 2016-11-24 09:56
我个人的建议:如果要好好学习 Perl5, 最好学习 Modern Perl, 这是 Perl5 的一个子集,这些特性是 Perl 语 ...

很同意这一点。话说Modern Perl这个词在不同的语境下可能有不同的含义。它可以泛指近几年来在Perl社区形成共识的一些programming practices,包括程序可读性安全性等方面的建议,以及对于Moose等一些新的重要的library的使用。Modern Perl也可以指chromatic这个人写的Modern Perl一书,该书可以算是对前述“Modern Perl”理念进行综合整理的一个重要代表,在网上有免费的版本(官方地址在http://modernperlbooks.com/books/modern_perl_2016/index.html,别的地方应该也可以下载到pdf的版本。)与另一本常见的Perl教材Learning Perl相比,Modern Perl一书更加注重于整体的“Perl programming”,Learning Perl相对较浅并有点偏重于系统管理。


另外关于上面几个楼层里提到的其他几点:

autoderef实际上是被postderef取代了。postderef就是一个简单纯粹的syntax sugar。相比之下autoderef的机制更复杂一些,使得它有一些限制且在一些应用场合可能有歧义,见http://modernperlbooks.com/books ... jRGVyZWZlcmVuY2luZw。历史上Perl社区对于reference的设计有过反思,因为Perl5里面数据有些/有时候要用/不用reference这个设计显得复杂了,所以Perl6设计为everything is a reference。Perl 5.14加入的autoderef估计也是有类似思维的一种尝试,但Perl5本身的复杂性以及设计上已有的一些不一致性导致了autoderef的失败。

关于“Hashbang redirection to Perl 6”那点。实际上“hashbang redirection”是这样的一个行为:你可以在.pl文件里面用其它解释器的shebang,比如在foo.pl的第一行可以写#!/usr/bin/env python,那么当你在shell里面运行perl foo.pl的时候呢,Perl5解释器会发现shebang里并不含有perl,于是转给python来运行这个名为foo.pl实则可能是python脚本的东西。当然了,这是一个很奇葩的行为,但是Perl太久之前就确立为*nix上重要的系统工具,早年的一些奇奇怪怪的设计现在成了历史包袱。(类似的情况在Perl里面不时可以看到,比如某个基础功能有多种不同的写法,实际上其中的一些写法是从Perl早期遗留下来的,现在已经没有必要或者可能不太合适了。)而如果你shebang写#!/usr/bin/env perl6的话,之前Perl5并不认为perl6是一个别的解释器,即perl foo.pl不会调用perl6而是自己去运行这个Perl6脚本。“Hashbang redirection to Perl 6”就是fix了这个问题。



Perl基本上每隔几个版本会出一些比较重要的或者有意思的新功能,比如5.10, 5.14, 5.20。近两年的5.22和5.24相对于5.20而言,我觉得比较多的一类改进是在performance上面,但这个效率的东西见仁见智,不同的场合能获得的有效提速、以及这种提速的意义都各不相同。另外,现在不稳定的新特性都会放在experimental里面,像autoderef那样加进来让大家无区别地随便用了以后却又删掉的事情在今后几乎不太可能再发生。如果要考虑你的Perl代码的未来兼容性的话,尽量避免用experimental的feature就是了。

评分

参与人数 1信誉积分 +10 收起 理由
sunzhiguolu + 10 很给力!

查看全部评分

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2016-11-28 11:17 |显示全部楼层
回复 9# zhouzhen1
好的, 谢谢大神帮忙指点. 的确大涨见识了!

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP