perlとrubyの真偽の違い

perl

お、しまった。(rubyirbに相当する)インタプリタがない。perlshとやらを導入。*1

#aptitude install libterm-readline-gnu-perl
#zcat /usr/share/doc/libterm-readline-gnu-perl/examples/perlsh.gz > /usr/local/bin/perlsh
#chmod +x /usr/local/bin/perlsh

perlの場合空文字列、0、空配列全て偽になるな。さすがperlなんでもあり。

$ perlsh
main[1]$ 0||"OK"
OK
main[2]$ ""||"OK"
OK
main[3]$ ()||"OK"
OK

rubyの場合

さみしい、さみしすぎるじゃないか。これのためだけに一個余計な変数(または関数)が必要になるのか。比較って重要だな。でも型ごとに比較演算子のあるlispに比べたらましか。

$ irb
irb(main):001:0> 0||"OK"
=> 0
irb(main):002:0> ""||"OK"
=> ""
irb(main):003:0> []||"OK"
=> []
irb(main):004:0> false||"OK"
=> "OK"

なんか、むかしruby本で読んだことある気がするんだが、忘れてしまった。後で追記しよう。