第一章 Perl6 介绍

Perl 6 是什么?

Perl 6 是一种逐渐演进的通用的多用途高级语言。Perl 6 是多范式的,它支持过程编程,面向对象编程和函数式编程。

Perl 6 的座右铭:

·TMTOWTDI:There is more than one way to do it.
                                做一种事不只有一种方法

·简单的事情就应该是简单的,困难的事情应该变得简单,不可能的事情变成困难的事。(Easy things should stay easy, hard things should get easier, and impossible things should get hard.)

Perl 6 术语

Perl 6: 是一种带有测试套件的语言规范,通过该测试套件实现的执行程序可以被认为是Perl 6。

Rakudo:Perl 6 的编译器。

Rakudobrew:Rakudo的安装管理器。

Panda:Perl 6 的模块安装程序。

Rakudo Star:包含Rakudo、Panda、一揽子Perl 6 模块和文档的一个文件集。

安装Perl 6

Linux

1.安装Rakudobrew:https://github.com/tadzik/rakudobrew

2.安装Rakudo:在终端上输入命令

Rakudobrew buildmoar

3.安装Panda:在终端输入命令

Rakudobrew build-panda

OSX

跟Linux中的安装步骤基本相同。

或者安装homebrew:

brew install rakudo-star

Windows

1.下载最新版本的安装程序(带有.MSI扩展名的文件),32位系统请下载x86文件,64位系统请下载x86——64文件:http://rakudo.org/downloads/star/                    

2.安装完成后添加C:\rakudo\bin到PATH中

Docker

1.获取官方Docker镜像文件

docker pull rakudo-star

2.使用该镜像运行一个容器

docker run -it rakudo-star

运行Perl6代码

Perl 6 的代码运行可以通过使用REPL(Read-Eval-Print Loop)来实现。实现方法是,打开命令行终端,输入perl6后回车。操作结束后会在下一行出现命令提示符“>”。输入一行代码后回车,REPL将会输出该行的返回值。循环该操作可以继续执行下一行代码。输入exit并回车可以离开REPL。

或者,你可以在文件中编写你的代码,保存后再运行。建议Perl 6 脚本文件的扩展名设定为“.pl6″。运行该文件的代码时只需将该文件的文件名“perl6filename.pl6”输入到命令行终端后回车即可。但不像REPL可以直接自动输出每一行的结果,这里要求文件中的代码必须包含“say”等声明才能输出结果。

REPL大多用于测试特殊的一块代码,惯常是仅有一行。对于超过一行代码的程序,建议还是先保存在文件中而后运行。

单行代码也可以非交互的直接在命令行上测试。方法如下:

perl6 -e ‘你的代码’

回车

温馨提示:

Rakudo star捆绑了一个能帮你从REPL中获取最多的行编辑器。

如果你安装单一的Rakudo而不是Rakudo Star,你可能不会拥有可供使用的行编辑(利用上下方向键查询历史;左右方向键以编辑输入;TAB键以完成当前行输入)功能。此时可以考虑运行以下命令,可以设置好上述功能:

panda install Linenoise            #Windows,linux,OSX

panda install Readline             #在你使用Linux并且偏爱Readline库时

编辑器

上述到大多数情况下我们会将Perl 6程序代码编写并保存到文件中,因此我们需要一个优雅的而且能够识别并支持Perl 6语法的文本编辑器。

从个人角度来说,我推荐正在使用的Atom。这是一个时尚的文本编辑器,能将Perl 6的语法从框中高亮的表示出来。Perl6-fe是相对于Atom的另一种选择,也可以高亮Perl 6的语法,该软件来源于原始的包,但存在很多bug需要修补和编辑。

社区里的其他同伴也有使用VimEmacsPadre的。

最新版本的Vim装有高亮语法的功能,Emacs和Padre则需要另行安装额外的包。

Hello World!

我们可以从经典的hello world开始开始Perl 6之旅了

say ‘hello world’;

也可以写成这样:

‘hello world’ .say;

语法概览

Perl 6 是形式自由的。大多数情况下,你可以使用任意数目的空格符。

Perl 6 语句(statement)通常是一行有逻辑的代码,一般需要以分号(;)结尾,例如

say “Hello” if True;

表达式(expression)是一种特殊类型的语句,它将返回执行后的值(value),例如

1+2                   #返回3

表达式由项和运算符组成。

项有:

·变量(variables):可以被操作和改变的值。

·常量(literals):不发生变化的值,例如一个数字或字符串。

运算符分类:

|                     类型                   |                   说明                   |      举例     |

|前缀(prefix)                        | 在项之前                               |           ++1|

|中缀(infix)                          |在项之间                                |           1+2|

|后缀(postfix)                      |在项之后                                 |           1++|

|环缀(circumfix)                  |包围项                                    |             (1)|

|后环缀(postcircumfix)        |在一项的后面并且包围另一项    |    Array[1]|

标识符

标识符是你在定义项时起得名字。

规则:

·标识符必须以下划线或者字母开头。

·可以包含数字,但不能以数字开头。

·除开头和末尾,且右侧是字母时,中间可以包含连接符和省略福。

|合法标识符|    |不合法标识符|

|var1         |     |1var            |

|var-one   |     |var-1          |

|var’one    |     |var’1           |

|var1_       |     |var1′           |

|_var         |     |-var            |

命名规范

·Camel case:variableNo1

·Kebab case:variable-no1

·Snake case :variable_no1

你可以自由选择喜欢的方式来命名你的标识符,但采用上述其中一种规范来进行一致性的命名,不失为一种好习惯。

采用具有特定表意的名称会让你(当然也有别人)的编程生活更舒适!

·var1 = var2 * var3     #标识符语法正确,但含义不明显

·monthly-salary = daily-rate * working-days    #这会是一种更好的变量命名方式

注释

注释是用以当做备忘的,在执行过程中被编译器忽略的一段文字。

注释可以分为三种类型:

·单独行注释(single line):

# This is a single line comment

·语句中的注释(embedded):

say # `(This is an embedded comment) “Hello World.”

·多行注释(Multi line):

=begin comment

This is a multi line comment.

Comment 1

Comment 2

=end comment

引用

字符串需要使用双引号(””)或者单引号(”)来进行定界。

以下情况一直采用双引号:

·你的字符串包含撇号(’)

·你的字符串中包含需要进行值内插的变量

say ‘Hello World’;               #Hello  World

say “Hello World”;              #Hello  World

say “Don’t”;                        #Don’t

my $name = ‘John Doe’;

say ‘Hello $name’;              #Hello  $name

say “Hello $name”;              #Hello  John Doe

    原文作者:暂时是E0
    原文地址: https://www.jianshu.com/p/be32846fb5f1
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞