定義済み定数と関数

最近まで undef を定義済みの値みたいに扱っていたけれど、undefはどうやら関数。
undef @array みたいに使えるんだから、よく考えたら当たり前か。
これに関連して、Perlは定義済み定数と見なせる関数は、コンパイル時にホントに関数を定義済み
定数のようにしてしまうらしい。

sub PI () { 3.14 }
$scalar = 5 * PI;

のように定数を返すサブルーチンを書くと、PIはコンパイル時に3.14に書き換えられ、

$scalar = 5 * 3.14;

と書くのと全く同じ状態になるらしい。