Perl 6 教程

一点点闲话

Perl是一门非常经典的编程语言,广泛用于文本处理,系统维护,网关编程(CGI)等许多领域。但是近年来,Perl的风头渐渐被一些新的语言所盖过,如Python,Javascript,Node.js等等。尤其是Python,这个从一开始就被视为Perl的对手的语言,得到了广泛的认可和青睐。在最新的TIOBE编程语言排行榜上,Python已经上升到第四位,超过了PHP,Javascript,仅次于三巨头Java, C/C++。

目前Perl的稳定版本是2015年6月1日发布的5.22。要知道,Perl 5的第一个版本5.000是在1994年发布的,距今已经超过20年。至此之后,Perl的主版本号就一直停留在5,后续的开发工作也是基于Perl 5编译器的核心,这使得Perl 5编译器的核心变得越来越庞大,越来越复杂。其实,Perl的开发社区很早以前就意识到了这个问题,在2000年的时候,Perl的核心领导者Larry就提出了开发Perl 6的计划。由于种种原因,Perl 6的开发计划进度非常缓慢,过程中遇到了很多困难,发布日期也是一推再推。

但是,好消息是,尽管困难重重,Perl 6还是要来了。在2015年2月的一次学术会议上,Larry宣布,Perl 6将在2015年的圣诞节

正式发布。10月,Perl 6的官方网站也做了一次大的更新,添加了许多有用的资料。现在距离圣诞节还有不到三周的时间,作为一名Perl的粉丝,非常期待Perl 6正式发布后能够一扫近年来的颓势,重新回到大家的视野中。鉴于目前Perl 6的中文资料非常稀少(英文资料也不是很多),准备在此做一个Perl 6的简明教程。无论你之前有没有接触过编程,无论之前有没有接触过Perl,都可以试着读一下本教程。希望大家能够喜欢Perl 6,喜欢我的教程。

虽然现在Perl 6还没有正式发布,但是我们已经可以用上Perl 6了。早在2010年,Rakudo团队就发布了第一个可用的Perl 6的编译器。在这里要稍微说一下关于Perl 6和他的编译器名称的问题。在Perl 5时代以及更早的时候,Perl既可以指这Perl一门语言,也可以指Perl的编译器。可是在Perl 6的时候,Larry提出我们要让语言本身和他的实现相分离。所以Perl 6指的是这个语言的设计标准,而他的实现(编译器)可以是不同的。类似的例子就如C++。C++是一门语言,但是他可以有不同的编译器,比如VS C++,G++,CLANG等等。而Rakudo就是目前对Perl 6标准支持最完善的一个编译器。当然,要指出的是,这里的编译器和C/C++的编译器还是很不一样的。因为Rakudo并不是将Perl代码编译成机器码,可以在CPU上直接执行,而是转换成一种类似Java Bytecode的中间代码。这种中间代码可以在虚拟机上运行。其中,JVM就是被支持的一种虚拟机。除了JVM,还有MoarVM,这是比JVM更好的选择。除了这两个以外,还有一个叫Parrot,曾经是Perl 6主要支持的。后来因为一些变故和MoarVM的崛起,Perl 6转向了主要支持MoarVM,这些就不展开啦。总而言之,Perl 6完全摆脱了Perl 5的编译器,采用的是一个全新的,没有历史包袱的架构。这同时也带来了一些问题,主要有两个。一是Perl 6并不完全向下兼容Perl 5的语法。对于以前的Perl 5的程序,不能保证他们可以正确地被编译,可能出现编译错误。对于这个问题,在Python 2向Python 3转变的过程中也遇到过。二是Perl 6由于采用了先编译到中间代码,再通过虚拟机执行的方式,他的运行速度相比Perl 5慢了不少。这两个问题目前还没有非常完美的解决办法。

虽然Perl 6还有一些问题,但是这不能掩盖Perl 6背后先进的设计思想和更丰富好用的语法所带来的便利。在Perl 6还没有发布前,我们可以通过安装Rakudo和MoarVM(JVM/ParrotVM)来体验和学习一下Perl 6。

如何安装

Windows

对于windows用户,可以去这个页面下载适合的安装程序(.msi)

http://rakudo.org/downloads/star/

Mac OS X

对于Mac用户,最好的方法就是用Homebrew。如果你已经装了,那么就可以通过下面的命令

$ brew install rakudo-star

可以使用命令查看一下我们安装的Perl 6的版本

$ perl6 --version
This is perl6 version 2015.09 built on MoarVM version 2015.09

根据我自己的经验,这个rakudo的版本已经更新到了基于MoarVM的2015.9,已经是非常新的版本了。如果你的版本比我的还要新,那么恭喜你。

Linux

在Linux上主要有两种方法来安装Perl 6。

从库中自动安装(建议)

如果你是初学者,我强烈建议采用这一种安装方法。

  • Debian/Ubuntu/LinuxMint
$ sudo apt-get install rakudo
  • Fedora/Red Hat/Cent OS
$ yum install rakudo

一句话就解决了,省心。照例看一下版本

$ perl6 --version
This is perl6 version 2013.12 built on parrot 5.9.0 revision 0

我用的是LinuxMint 17.3。这里安装的版本是基于parrot的2013.12,比Mac上的版本要低一些,但是功能上该有的也基本都有了,所以问题不大。

如果你特别在意版本的问题,想要用到最新的版本,也有办法,可以自己编译源码。但是非常不建议没有经验的新手尝试。

从源码编译安装(慎重)

首先,从源码编译安装要求

  • Perl 5.8 or newer (这个基本不会有问题)
  • git
  • make
  • gcc
    对于后三个,如果没有的话需要自己安装。建议采用sudo apt-get install的方法。

其次,我们需要用到一个小工具叫rakudobrew。利用这个小工具,可以让我们很方便的下载并安装最新的rakudo。安装这个小工具需要下面三条命令

$ git clone https://github.com/tadzik/rakudobrew ~/.rakudobrew
$ echo 'export PATH=~/.rakudobrew/bin:$PATH' >> ~/bashrc
$ source ~/.bashrc

如果没有什么错误信息的话,就表示rakudobrew已经装好啦。
下面就可以用这条命令安装Rakudo了。

$ rakudobrew build moar

经过将近十分钟的等待和屏幕上眼花缭乱的安装信息之后,Rakudo和MoarVM已经成功装好了。这时候再查看版本信息

$ perl6 --version
This is raked version 2015.11-416-g328e95e built on MoarVM version 2015.11-34-gc3eea17 implementation Perl v6.b

不错吧,已经更新到2015年11月的某个基于MoarVM的版本了。版本控么应该可以开心了吧。过了一段时间后如果希望升级到最新的版本,就再运行一次这个命令就可以了。

如果想要更新rakudobrew本身,可以用下面这个命令

$ rakudobrew self-upgrade 

除了Rakudo以外呢,还推荐大家装一个小工具叫Panda。名字取的挺好的,就是熊猫。这个是专门为Perl 6用来安装Perl模块的工具。用下面的命令就可以装上。

$ rakudobrew build-panda

装上以后,我们来尝试装一个模块,叫Task::Star

$ panda install Task::Star

这个命令可以一键帮你装好所有常用的Perl 6的模块,就不用等到需要的时候再一个个去找去安装了。

另外需要补充的是,rakudobrew的方法也同样可以用在Mac OS X上,步骤也是一样的。这样也可以为你的Mac装上最新的Perl 6版本。

这样,我们就装好了Perl 6。

第一个Perl 6程序

我们可以试着用Perl 6来写一个最简单的程序:Hello World

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

推荐阅读更多精彩内容