備忘録。 このページをアンテナに追加 RSSフィード

2007-01-27

[]パラメータによる処理の分岐を簡単にする パラメータによる処理の分岐を簡単にするを含むブックマーク パラメータによる処理の分岐を簡単にするのブックマークコメント

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

さて、最近はフレームワークを使用した開発が主流ですが、

ちょっとしたツールや管理ページなどを作る場合、パラメータ

処理を分岐する方法はよく使います。

例えば、「データ一覧表示」「データ編集」「データ追加」のタスクがあり、

「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


これだけで、サブルーチンが呼び出されます。

これはかなりイケていると思います。

これを応用すれば、モジュールのメソッドを動的に呼び出したり、

面白い事ができそうです。