第一章 Perl6 介紹

Perl 6 是什么盼砍?

Perl 6 是一種逐漸演進的通用的多用途高級語言碾盟。Perl 6 是多范式的,它支持過程編程锄俄,面向?qū)ο缶幊毯秃瘮?shù)式編程。

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: 是一種帶有測試套件的語言規(guī)范药有,通過該測試套件實現(xiàn)的執(zhí)行程序可以被認為是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位系統(tǒng)請下載x86文件蜘澜,64位系統(tǒng)請下載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)來實現(xiàn)。實現(xiàn)方法是响疚,打開命令行終端鄙信,輸入perl6后回車。操作結(jié)束后會在下一行出現(xiàn)命令提示符“>”忿晕。輸入一行代碼后回車装诡,REPL將會輸出該行的返回值。循環(huán)該操作可以繼續(xù)執(zhí)行下一行代碼践盼。輸入exit并回車可以離開REPL鸦采。

或者,你可以在文件中編寫你的代碼咕幻,保存后再運行赖淤。建議Perl 6 腳本文件的擴展名設定為“.pl6"。運行該文件的代碼時只需將該文件的文件名“perl6filename.pl6”輸入到命令行終端后回車即可谅河。但不像REPL可以直接自動輸出每一行的結(jié)果咱旱,這里要求文件中的代碼必須包含“say”等聲明才能輸出結(jié)果。

REPL大多用于測試特殊的一塊代碼绷耍,慣常是僅有一行吐限。對于超過一行代碼的程序,建議還是先保存在文件中而后運行褂始。

單行代碼也可以非交互的直接在命令行上測試诸典。方法如下:

perl6 -e '你的代碼'

回車

溫馨提示:

Rakudo star捆綁了一個能幫你從REPL中獲取最多的行編輯器。

如果你安裝單一的Rakudo而不是Rakudo Star崎苗,你可能不會擁有可供使用的行編輯(利用上下方向鍵查詢歷史狐粱;左右方向鍵以編輯輸入舀寓;TAB鍵以完成當前行輸入)功能予借。此時可以考慮運行以下命令王带,可以設置好上述功能:

panda install Linenoise ? ? ? ? ? ?#Windows,linux,OSX

panda install Readline ? ? ? ? ? ? #在你使用Linux并且偏愛Readline庫時


編輯器

上述到大多數(shù)情況下我們會將Perl 6程序代碼編寫并保存到文件中,因此我們需要一個優(yōu)雅的而且能夠識別并支持Perl 6語法的文本編輯器缤谎。

從個人角度來說蒋搜,我推薦正在使用的Atom篡撵。這是一個時尚的文本編輯器,能將Perl 6的語法從框中高亮的表示出來豆挽。Perl6-fe是相對于Atom的另一種選擇育谬,也可以高亮Perl 6的語法,該軟件來源于原始的包帮哈,但存在很多bug需要修補和編輯膛檀。

社區(qū)里的其他同伴也有使用VimEmacsPadre的娘侍。

最新版本的Vim裝有高亮語法的功能宿刮,Emacs和Padre則需要另行安裝額外的包。


Hello World私蕾!

我們可以從經(jīng)典的hello world開始開始Perl 6之旅了

say 'hello world';

也可以寫成這樣:

'hello world' .say;


語法概覽

Perl 6 是形式自由的僵缺。大多數(shù)情況下,你可以使用任意數(shù)目的空格符踩叭。

Perl 6 語句(statement)通常是一行有邏輯的代碼磕潮,一般需要以分號(;)結(jié)尾,例如

say "Hello" if True;

表達式(expression)是一種特殊類型的語句容贝,它將返回執(zhí)行后的值(value)自脯,例如

1+2 ? ? ? ? ? ? ? ? ? #返回3

表達式由項和運算符組成。

項有:

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

·常量(literals):不發(fā)生變化的值膏潮,例如一個數(shù)字或字符串。

運算符分類:

| ? ? ? ? ? ? ? ? ? ? 類型 ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ? ? 說明 ? ? ? ? ? ? ? ? ? | ? ? ?舉例 ? ? |

|前綴(prefix) ? ? ? ? ? ? ? ? ? ? ? ?| 在項之前 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ++1|

|中綴(infix) ? ? ? ? ? ? ? ? ? ? ? ? ?|在項之間 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| ? ? ? ? ? 1+2|

|后綴(postfix) ? ? ? ? ? ? ? ? ? ? ?|在項之后 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? 1++|

|環(huán)綴(circumfix) ? ? ? ? ? ? ? ? ?|包圍項 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| ? ? ? ? ? ? (1)|

|后環(huán)綴(postcircumfix) ? ? ? ?|在一項的后面并且包圍另一項 ? ?| ? ?Array[1]|


標識符

標識符是你在定義項時起得名字满力。

規(guī)則:

·標識符必須以下劃線或者字母開頭焕参。

·可以包含數(shù)字,但不能以數(shù)字開頭油额。

·除開頭和末尾叠纷,且右側(cè)是字母時,中間可以包含連接符和省略福潦嘶。

|合法標識符| ? ?|不合法標識符|

|var1 ? ? ? ? | ? ? |1var ? ? ? ? ? ?|

|var-one ? | ? ? |var-1 ? ? ? ? ?|

|var'one ? ?| ? ? |var'1 ? ? ? ? ? |

|var1_ ? ? ? | ? ? |var1' ? ? ? ? ? |

|_var ? ? ? ? | ? ? |-var ? ? ? ? ? ?|

命名規(guī)范

·Camel case:variableNo1

·Kebab case:variable-no1

·Snake case :variable_no1

你可以自由選擇喜歡的方式來命名你的標識符涩嚣,但采用上述其中一種規(guī)范來進行一致性的命名,不失為一種好習慣。

采用具有特定表意的名稱會讓你(當然也有別人)的編程生活更舒適航厚!

·var1 = var2 * var3 ? ? #標識符語法正確顷歌,但含義不明顯

·monthly-salary = daily-rate * working-days ? ?#這會是一種更好的變量命名方式


注釋

注釋是用以當做備忘的,在執(zhí)行過程中被編譯器忽略的一段文字幔睬。

注釋可以分為三種類型:

·單獨行注釋(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

引用

字符串需要使用雙引號("")或者單引號('')來進行定界眯漩。

以下情況一直采用雙引號:

·你的字符串包含撇號(')

·你的字符串中包含需要進行值內(nèi)插的變量

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

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市溪窒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌冯勉,老刑警劉巖澈蚌,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異灼狰,居然都是意外死亡宛瞄,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門交胚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來份汗,“玉大人,你說我怎么就攤上這事蝴簇”睿” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵熬词,是天一觀的道長旁钧。 經(jīng)常有香客問我,道長互拾,這世上最難降的妖魔是什么歪今? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮颜矿,結(jié)果婚禮上寄猩,老公的妹妹穿的比我還像新娘。我一直安慰自己骑疆,他們只是感情好田篇,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著箍铭,像睡著了一般斯辰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上坡疼,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天彬呻,我揣著相機與錄音,去河邊找鬼。 笑死闸氮,一個胖子當著我的面吹牛剪况,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蒲跨,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼译断,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了或悲?” 一聲冷哼從身側(cè)響起孙咪,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎巡语,沒想到半個月后翎蹈,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡男公,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年荤堪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枢赔。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡澄阳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出踏拜,到底是詐尸還是另有隱情碎赢,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布速梗,位于F島的核電站揩抡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏镀琉。R本人自食惡果不足惜峦嗤,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望屋摔。 院中可真熱鬧烁设,春花似錦、人聲如沸钓试。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽弓熏。三九已至恋谭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挽鞠,已是汗流浹背疚颊。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工狈孔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人材义。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓均抽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親其掂。 傳聞我的和親對象是個殘疾皇子油挥,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 2016-10-20 號更新。 源文件可以在 github 或 perl6.org上找到. General Rak...
    焉知非魚閱讀 980評論 0 0
  • 標題: Rakudo and NQP Internals子標題: The guts tormented imple...
    焉知非魚閱讀 1,392評論 1 3
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,264評論 25 707
  • Perl 哲學 Perl 是一種能“干實事”的語言款熬。它靈活深寥、寬容、可塑贤牛。在一名編程能者的手中惋鹅,它可以 完成幾乎所有...
    firefive閱讀 1,385評論 1 11
  • 風輕輕敲過月亮的家 于是夜晚又來臨了 帶著溫潤而涼爽的空氣 賜予大地滿滿愛和幸福 瓜地里的刺猬抬起了頭 樹上的蘋果...
    山雞n閱讀 203評論 0 0