匿名質問者
匿名質問者匿名質問者とは「匿名質問」を利用して質問した質問者。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら

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


サブルーチンに移動する部分ですが…
if($mode eq "a"){&a;}
elsif($mode eq "b"){&b;}
elsif($mode eq "c"){&c;}

を必要分書いていくと思いますが、「もし$modeが」までの部分は一緒ですよね。
この部分をもっと省略ってできるのでしょうか?

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2016/03/28 09:11:19
  • 終了:2016/03/28 11:35:03

ベストアンサー

匿名回答1号 No.1

匿名回答1号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2016/03/28 09:42:34

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

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

匿名質問者

ありがとうございます!

2016/03/28 11:34:57

その他の回答(1件)

匿名回答1号 No.1

匿名回答1号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2016/03/28 09:42:34ここでベストアンサー

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

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

匿名質問者

ありがとうございます!

2016/03/28 11:34:57
匿名回答2号 No.2

匿名回答2号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2016/03/28 11:30:11

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 . "()";

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません