Perlメモ サブルーチン(関数)のリファレンスをハッシュに格納する

  • 2
    Like
  • 3
    Comment

jQueryでハッシュにfunction突っ込んでた癖で、文字列をキーにサブルーチンを分岐させたいと思ったら、Perlでそういう書き方をしたことがなかったことに気づいた。

Perlの場合、クラスを作るときはそういう書き方することはあるけど、べたに書くこともできるんだっけ?と思い、ぐぐってみたけど、意外とヒットしない。

試してみたら、意外と簡単にいけちゃった。

my %aaa;
$aaa{test} = sub {
    print "あひゃ";
};
&{$aaa{test}};

#出力:あひゃ

とういう今更なメモでした。

追記
引数を付けるバージョン。宣言型(「print "あひゃ"」とかの括弧を使わないSQL文みたいな記述法 )の呼び方は何故かエラーになりました。

my %aaa;
$aaa{test2} = sub {
    my ($arg1, $arg2) = @_;
    print $arg1, " + ", $arg2, " = ", $arg1 + $arg2;
};
&{$aaa{test2}}(1, 2);

#出力:1 + 2 = 3