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