人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

perlでif文。もっとスマートな書き方ってありますか?

サブルーチンに移動する部分ですが…
if($mode eq "a"){&a;}
elsif($mode eq "b"){&b;}
elsif($mode eq "c"){&c;}
?
を必要分書いていくと思いますが、「もし$modeが」までの部分は一緒ですよね。
この部分をもっと省略ってできるのでしょうか?

●質問者: 匿名質問者
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● 匿名回答1号
ベストアンサー

Perl5.8.0以降ならばswitch文が使えるかと思いますが、性能が悪くなりそうです。

http://www.donzoko.net/doc/memo/unlikeperl.html


匿名質問者さんのコメント
ありがとうございます!

2 ● 匿名回答2号
sub sub_a {
 print "sub_a\n";
}

sub sub_b {
 print "sub_b\n";
}

$mode = "b";

# 関数のリファレンスをハッシュに持つ
%table = ("a" => \&sub_a, "b" => \&sub_b);

$table{$mode}->();



# eval は美しくない
eval "&sub_" . $mode . "()";
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ