Tie::Anonというしょーもないモジュール書いた

この間、こんなふうにてきとーなデータをTie::IxHashに詰めて返す関数を書いた。

sub numbers {
    my ($orig) = @_;
    tie(my %h, "Tie::IxHash",
        orig   => $orig,
        square => $orig * $orig,
        cube   => $orig * $orig * $orig
    );
    return \%h;
}

このコード、変数%hはtieを受けるためだけの変数で、本質的には必要ないはず。必要ないはずの変数にわざわざ名前をつけなきゃいけないのがダルかったので、Tie::Anonというモジュールを書いてみた。

use Tie::Anon qw(tieh);

sub numbers {
    my ($orig) = @_;
    return tieh("Tie::IxHash",
        orig   => $orig,
        square => $orig * $orig,
        cube   => $orig * $orig * $orig
    );
}

tieh関数は中でハッシュを作り、tieして、ハッシュへのリファレンスを返す。こうすれば一時変数%hは必要ない。

今までこういうのがなかったのが不思議だけど、まあしょーもなさすぎて誰も作らなかったのか。でも無名で済むものはなるべく無名で済ますべきだと思う。たとえ一時変数でも変数名をつけようとするとスコープやら名前衝突やらが頭をよぎってほんの一瞬手が止まってしまう。