在 FreeBSD 上一堆 ports maintainer 要傷腦筋處理 Perl 5.8 與 Perl 5.10 之間的相容性問題了...
Perl 5.10.0 除了修正 bug 外,在效率上也做了許多改進,在 perl5100delta 可以查到完整的內容,幾個我比較有興趣的:
- 引入
//
運算子。以前寫defined $a ? $a : $b
,現在可以寫$a // $b
。同理,$a //= $b
等價於$a = (defined $a ? $a : $b)
,表示 $a 沒有被定義時塞入 $b。另外,//
與||
有相同的優先權。 - 有了 switch-case-default 的架構,不過在 Perl 裡叫
given
-when
-default
。 - 更快的 Regular Expression Engine,以及一些變動。
- Perl 內建的 Unicode 資料庫更新到 5.0.0。
- 新增了一堆 module...
- 一堆效能的改善...
反正用就是了 XD
對了,大力推薦 Strawberry Perl,試圖在 Win32 平台上建立一個簡單而且強大的 Perl 環境,目前還是 Perl 5.8.8,等他正式推出 Perl 5.10.0 的版本...
如果要測試的人可以參考 Strawberry Perl Beta 2 Release 這篇抓 Beta 2 版測試。
Update:除了上面所說的,另外還有 Some perl 5.10 comparisons 提到的 say
(與 print
+ \n
) 以及 ~~
(與 grep
+ eq
) 的效能比較。
Update:Strawberry Perl 5.10.0 正式出版了!
// operator 應該是定義成
$a // $b === defined($a) ? $a : $b
吧? 如果 $a = 0, $b = 1 那麼
$a || $b === 1
$a // $b === 0
對 orz
看到Strawberry Perl覺得有點驚訝...終於有人做這種專案了
想當年我自己玩CGI/Perl的時候都是用ActivePerl = =