2007 12 23 04 22 perl v5.10.0 新寫法

剛剛在網路上,看到perl已經出了v5.10.0。
雖然已經lag了,不過這版倒是提供了一些新寫法。

有feature這個新的保留字,
用來處理向後相容的問題。
use feature qw(switch say state);
這樣就可以開啟 switch say state 這三種寫法。
先從 say 開始,事實上就是會自動換行的 print

say LIST 等同 { local $\="\n"; print LIST }

而 switch 就看起比較跟其他語言比較不同。
下面是範例:

give($_) {
    when(/^abc/) { $abc = 1; continue}
    when(/^abcdef/) { $abcdef = 1; }
    when(/^xyz/) { $xyz = 1; }
    default { $nothing = 1; }
}

不過看久也就會習慣了吧~:P

而 state 就是用來宣告靜態變數。
以往要做到類似的功能是要寫成:
{
    my $x = 0;
    sub gimme_another { ++$x; say $x }
}
現在則只需要寫成這樣:
sub gimme_another { state $x = 0; ++$x; say $x }
gimme_another;
gimme_another;
gimme_another;

而執行結果當然是:
1
2
3

還有很奇怪的 ~~ ,
稱之為 smart matching ,
不過我實在是不太能接受這個用法,
不同的參數型態會比較不同的東西。
不覺得這是個很好的發明~
有興趣的可以自己看看文件

不過這些新寫法,大概還是需要一段時間去適應。


參考:
http://search.cpan.org/~rgarcia/perl-5.10.0/lib/feature.pm
http://search.cpan.org/~rgarcia/perl-5.10.0/pod/perl5100delta.pod