![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
いくつも条件分岐があり、配列?テーブル?か何かに
登録しておいて、対応づけにより、C言語の関数ポイン
タのように処理をしたいのですが、どう記述すれば
いいのでしょうか。
例えば、変数$stool が”kitte”の場合は、関数
func_kitte()を呼び、変数$stool が"hagaki"の場合
関数func_hagaki()を呼び出したいのです。
この条件が300個以上あり、全部if~elsif文で
記述するより、配列か何かに登録する方が効率的だと
思ったからです。よろしくお願いします。
No.2ベストアンサー
- 回答日時:
関数もリファレンスを配列やハッシュに保存できたりします。
リファレンス化した関数をコールするにはリファレンスの先頭に"&"をつけます。
以下サンプルソース。
---------------------------------------------------------------
# 関数をハッシュに登録する
my %funcHash = (
kitte => \&func_kitte,
hagaki => \&func_hagaki,
);
# テストスクリプト
my @val = ('kitte','hagaki');
foreach my $stool (@val){
&{$funcHash{$stool}};
}
sub func_kitte{
print "kitte\n";
}
sub func_hagaki{
print "hagaki\n";
}
No.3
- 回答日時:
型グロブを介して、サブルーチンを呼び出せるかもしれません。
use strict;
my $stool = "kitte";
{
no strict 'refs';
&{*{"func_$stool"}{CODE}};
}
sub func_kitte { print "kitte\n"; }
sub func_hagaki { print "hagaki\n"; }
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- JavaScript カラーミーショップのsectionループ内で、[引数][戻り値]ありの関数的な処理を行いたいです。 1 2022/05/07 19:39
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- Excel(エクセル) 【エクセル】COUNTIFの検索条件が可変する数字の場合の数式 1 2022/09/27 15:34
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- その他(データベース) Microsoft Accessについて 1 2022/06/06 16:20
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
grep関数を用いた複数行からの抽出
-
[Perl]長すぎるif文を簡単にしたい
-
正規表現に関する質問
-
桁数指定と四捨五入
-
VBAで3秒だけ時間を止めたい
-
画面を強制的に再描画させる方法
-
VBAでの一時停止と再開の方法
-
エクセルの当番表を作っていま...
-
VBのReturnの使い方
-
どうしたら過去を忘れることが...
-
UWSCの終了の仕方
-
【VBA】全て空白のセルの列の非...
-
文字列を変数名として扱う方法
-
uwsc条件並列とそれの抜け方
-
foreach内での$_の書き換え
-
乱数の桁数指定、または範囲指定。
-
スレッド起動したフォームを正...
-
二次元配列における要素数のは...
-
ListBox 複数選択 で オートフ...
-
既存のBBSに返信機能の追加
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データベースから取得したデー...
-
perlで2つの配列を比較する方...
-
perlでファイルの拡張子を除い...
-
python質問
-
QNo.3258883データベースから取...
-
組み合わせを作るアルゴリズム
-
非共通要素を抜き出す
-
アルファベットn文字の組み合わ...
-
grep関数を用いた複数行からの抽出
-
複数の配列の要素を繰り返し処...
-
桁数指定と四捨五入
-
ハッシュのハッシュの値代入で...
-
サブルーチンへ渡した配列のリ...
-
index関数で複数個抜き出す
-
二次元配列のつかいかた。
-
正規表現 perl 連続ヒットの...
-
配列に入った変数を二度使いたい
-
プログラミングについて。 1つ...
-
画面を強制的に再描画させる方法
-
VBのReturnの使い方
おすすめ情報