トップページ » prog » switch文がほすぃ (perl)

switch文がほすぃ (perl)

 今までのエントリでも書いた様に只今Perlでもにょもにょしてるわけですが。
 なんかね、if-elsif-elseブロック書いてると欲しくなるんですよswitch文。
 そこで擬似的に実現する方法を考えてみますた。

  1.ブロックを利用する方法
my $var = 検査される値;
switch:{
  $var =~ /条件文字列/ && do{
    処理;
    last switch;
  }
}

 2.配列やハッシュを利用する方法
$var = 検査される値;
@switch_a = {
  &{ 処理; },
};
&{$switch_a[$var]};

%switch_h = (
  key => &{ 処理; },
);
&{$switch_h{$var}};

 ハッシュを使った方法なんかは割と多用しとります。
 例えばCGIなんかでモード毎の処理に飛ばすときなんかは以下の様にやります。
%command_do = (
  RSS => \&do_RSS,
  write => \&do_write,
);
&{$command_do{$mode}};

sub do_RSS{
  (snip)
}

sub do_write{
  (snip)
}

 これ割と重宝します。YukiWikiなんかでも使われてます。
 興味有る方お試しあれ。

by 長月葵  at 00:58
トラックバック
このエントリーのトラックバックURL:

トラックバックはありません

コメント
  1. ほぉ なるほどねぇ。2番は好きになれないけど、1番はいいねぇ。すんばらしぃ。2番は引数の扱いでBugの温床になりそうだ。
    おいらは、elsif 好きなんで elsifを使うと思うけどね(´Д`)

    by へぼたろ  2005年01月11日 04:50
  2. おぉ、たろタソみとったのか。
    ちなみに1番の方法はwhileやforeachなんかと併用するときにはデフォルト変数の$_が使えるので正規表現部分で$変数=~が省略できます。よりswitch文に近い見た目で(゚д゚)ウマー

    by 長月葵  2005年01月11日 20:44
  3. みつけちゃった!
    っつーか、おひさだな!
    独自ドメイン取ったのか
    おれも3つもってるぞ
    comとccとcx な
    ccだけ運用している
    comはサイドビジネス用で、近々運用開始さ
    たまにはチャットしようぜぃ

    by kira  2005年01月12日 02:32
  4. おー! きらり~ん! めっさおひさ~!
    久しぶりにチャットもしたいねぇ。でもBMはもうアンインスコ済みなのです(´・ω・`)
    MSN辺りで良ければいつでも付き合うよ。また今度よろ(´∀`)

    by 長月葵  2005年01月12日 02:44
  5. BMもかなり下火だぞ・・・
    odigoは4.0が現役で使えるでよ~3.1のIDも使えるし~
    ま、使ってる人は少ないがな・・・・

    ちなみにおいらは一年前にまたもや転職して、通算6社目の会社で働いてるぞ
    aoiちゃんが東京にくる機会があったら是非遊ぼうじゃないか
    うちに泊まってくれてもいいしな
    んじゃ!

    by kira  2005年01月13日 02:44
  6. > odigoは4.0が現役で使えるでよ~3.1のIDも使えるし~
     ぉ、4.0出てたのか。3.1のIDが行けるって事は詰まり2.0以降のIDなら何でも使えるってことじゃないのけ?(´A`)
     気になるのはバグの具合、2.5以降バグの巣穴だったOdigoが何処まで穴埋め出来たのか。

    > aoiちゃんが東京にくる機会があったら是非遊ぼうじゃないか / うちに泊まってくれてもいいしな
     じゃあ行くときはMSNか何かで声掛けるね。宿代浮いた(´∀`)
     ふふ、次の日仕事って言っても朝まで寝かせてあげないんだから♪

    by 長月葵  2005年01月13日 04:34
コメントを書く




保存しますか?



2009年01月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31