perl で true とか false とか使えない

オセロ大会で使っている大会運営システム、ちょっとわけあってここのところ内部をちょこちょこいじってます。外から見てたら何も影響は感じないと思いますが、組み合わせに使っている最小化アルゴリズムをちょっと(?)厳密にしたり、そんなようなことです。

で、先日の大会で、この自作のシステムがちょっと想定外の動作をしていることに気づきまして、急いで直した話。

要はですね、perl で書いたCGIなんですが、

$isTrioOpen = false;

if( $tourtype eq 'TRIO' && $division == 0 ){
  $isTrioOpen = true;
}

みたいな感じのコードを書いてたわけなんですよ。

このね、true とか false ってのがキーワードとして使えるのは最近のプログラム言語では普通のことなんですが、perl のような古い言語ではキーワードになってないのね。変数で真偽を表す時は、1 / 0 を使うのが普通の時代の言語だったわけなんだ。

最近 node.js とか python とか、私がガリガリコードを書いていた時代と比べるとめっちゃ modern な言語をいじっていたせいで、perl なのについつい true とか false とかを使ってしまい、

if( $isTrioOpen ){
  ## false なのにここが実行されてしまう
}

false が「偽」として判定されない、perl 的には当然の動作にしばらく悩まされた、という話でした。

コメントする