パラメータによる処理の分岐を簡単にする

同僚が大ピンチのようです。大丈夫でしょうか。

さて、最近はフレームワークを使用した開発が主流ですが、
ちょっとしたツールや管理ページなどを作る場合、パラメータで
処理を分岐する方法はよく使います。

例えば、「データ一覧表示」「データ編集」「データ追加」のタスクがあり、
「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


これだけで、サブルーチンが呼び出されます。
これはかなりイケていると思います。

これを応用すれば、モジュールのメソッドを動的に呼び出したり、
面白い事ができそうです。