perl のサブルーチン名は数字で始まったり、アンダスコア以外の記号を使ったサブルーチンは宣言できない。 use strict; use warnings; sub 0 { print '0' } &0; 実行すると下記の様に怒られる。 $ perl ./hoge.pl Illegal declaration of subroutine main::a at ./hoge.pl line 4. しかし下記のようにパッケージのシンボルテーブルをcoderef上書きすると実行できる。 use strict; use warnings; { no strict 'refs'; *{__PACKAGE__ . '::0';} = sub { print 0; }; &0; use strict; } $ perl ./hoge.pl 0もう何でもありである。というムダ知識を得たんだ。 use st