パラメータによる処理の分岐を簡単にする
同僚が大ピンチのようです。大丈夫でしょうか。
さて、最近はフレームワークを使用した開発が主流ですが、
ちょっとしたツールや管理ページなどを作る場合、パラメータで
処理を分岐する方法はよく使います。
例えば、「データ一覧表示」「データ編集」「データ追加」のタスクがあり、
「view」「edit」「add」というサブルーチンで処理をするような場合。
#! /usr/bin/perl use stict; use CGI; my $query = CGI->new; my $mode = $query->param( 'mode' ); if ( $mode = 'view' ) { view(); } elsif ( $mode = 'edit' ) { edit(); } elsif ( $mode = 'add' ) { add(); } sub view { #処理 } sub edit { #処理 } sub add { #処理 }
こんな感じになります。入門系のプログム本でもこんな感じが多いです。
しかしサブルーチンへの分岐が全然美しくありません。
そこで分岐処理の部分を
my $mode = $query->param( 'mode' );
main->$mode;
#または、__PACKAGE__->$mode でもOK
これだけで、サブルーチンが呼び出されます。
これはかなりイケていると思います。
これを応用すれば、モジュールのメソッドを動的に呼び出したり、
面白い事ができそうです。