パラメータで分岐
このエントリに対して
2007年07月03日 fbis perl ハッシュでディスパッチテーブルを作っておくほうがキレイかな
http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/macperl/20070127/p1
ってコメントがあったのだけど、ハッシュでディスパッチテーブルってどうやるんだっけ?と思ったのでちょっと書いてみる。
#!/usr/bin/perl use strict; use warnings; use CGI; my $query = CGI->new; my $mode = $query->param('mode'); my %dispatch = ( view => \&view, edit => \&edit, add => \&add, ); $dispatch{$mode}->(); # 引数がいるなら # $dispatch{$mode}->(qw/foo bar baz/); sub view { # hoge } sub edit { # fuga } sub add { # piyo }
たしかこうだっけ。たしかにこの方がif
〜elsif
〜else
の羅列よりスマートだけど、サブルーチンリファレンスを使うから入門書では使いにくい方法かなぁ。