tokuhirom's Blog

Perl5 でハイフンを含む関数名を定義した気分になる方法

Perl5 ではハイフンを含む関数名が定義できません。しかし、どうにかして定義することはできないものでしょうか。 はい。定義するだけならがんばればできます。

package Foo;
sub new { bless {} }
{
    no strict 'refs';
    *{"hoge-fuga"} = sub {
        die "YAY!\n";
    };
}

しかし、これをよぶにはいったいどうしたら。。。

my $foo = Foo->new;
$foo->can("hoge-fuga")->();

はい。can で coderef をとればうまくいきました。

しかし、ちょっと無理矢理すぎて、使い勝手はすごくわるそうです。

使うのはあきらめたほうがよさそうですね!