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

ほぉ なるほどねぇ。2番は好きになれないけど、1番はいいねぇ。すんばらしぃ。2番は引数の扱いでBugの温床になりそうだ。
おいらは、elsif 好きなんで elsifを使うと思うけどね(´Д`)
おぉ、たろタソみとったのか。
ちなみに1番の方法はwhileやforeachなんかと併用するときにはデフォルト変数の$_が使えるので正規表現部分で$変数=~が省略できます。よりswitch文に近い見た目で(゚д゚)ウマー
みつけちゃった!
っつーか、おひさだな!
独自ドメイン取ったのか
おれも3つもってるぞ
comとccとcx な
ccだけ運用している
comはサイドビジネス用で、近々運用開始さ
たまにはチャットしようぜぃ
おー! きらり~ん! めっさおひさ~!
久しぶりにチャットもしたいねぇ。でもBMはもうアンインスコ済みなのです(´・ω・`)
MSN辺りで良ければいつでも付き合うよ。また今度よろ(´∀`)
BMもかなり下火だぞ・・・
odigoは4.0が現役で使えるでよ~3.1のIDも使えるし~
ま、使ってる人は少ないがな・・・・
ちなみにおいらは一年前にまたもや転職して、通算6社目の会社で働いてるぞ
aoiちゃんが東京にくる機会があったら是非遊ぼうじゃないか
うちに泊まってくれてもいいしな
んじゃ!
> odigoは4.0が現役で使えるでよ~3.1のIDも使えるし~
ぉ、4.0出てたのか。3.1のIDが行けるって事は詰まり2.0以降のIDなら何でも使えるってことじゃないのけ?(´A`)
気になるのはバグの具合、2.5以降バグの巣穴だったOdigoが何処まで穴埋め出来たのか。
> aoiちゃんが東京にくる機会があったら是非遊ぼうじゃないか / うちに泊まってくれてもいいしな
じゃあ行くときはMSNか何かで声掛けるね。宿代浮いた(´∀`)
ふふ、次の日仕事って言っても朝まで寝かせてあげないんだから♪