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