perlの0e0は真だけど0

HOP3章終了。

"0e0"の使いどころがなかなか。

論理演算

$ "0e0" || 1
0e0
$ 0 || 1 
1

真と判定、で演算してみる。

$ "0e0" * 5
0
$ "0e0" + 5
5
$ "0e0" - 5
-5

数値だ

$ "0e0" == 0
1
$ "0e0" eq 0

論理演算で真を返すのに0

で、これがどう便利かというと

$cached{$key} ||= make_cache($key)

キャッシュに0が入ってる場合偽と判定されてしまい、キャッシュがあるのに再計算してしまうのだけど"0e0"を入れておくときちんとキャッシュが効くと。

ProductName Higher-order Perl: A Guide To Program Transformation
Mark Jason Dominus
Morgan Kaufmann Pub / ¥ 7,678 (2005-05-30)
通常24時間以内に発送

HOPではOrcish maneuverに絡めてあって、3章はこの部分が一番面白かった。4章はイテレータ、この章に100p近く割いてある。

splitのLIMITパラメータ

splitにはlimitパラメータがあることをHOP読んでて知った。

$ $t = "a b c d e"
$ split /\ +/, $t 
a
b
c
d
e
$ split /\ +/, $t , 2
a
b c d e

splitっていろいろできんじゃん。

HOP再開

5章まで読んだけど、(たいして理解してなかったので)もう一度最初から読んでみる。

ProductName Higher-order Perl: A Guide To Program Transformation
Mark Jason Dominus
Morgan Kaufmann Pub / ¥ 7,678 (2005-05-30)
通常24時間以内に発送

prefaceにこの本はSICPにインスパイアされて書いたでよって書いてあった。