アプリ版:「スタンプのみでお礼する」機能のリリースについて

sub AAA {my($key)=@_;
if($key){
($key eq "aaa") || ($key eq "bbb") || ($key eq "ccc") || ($key eq "ddd") || &Error("$keyが不正です。");
}
}

のような形があるとして、$key eq "" の数が50個近くあるような場合、横に表示するのではなく縦に
($key eq "aaa") ||
($key eq "bbb") ||
($key eq "ccc") ||
($key eq "ddd") ||
と、見栄えよく表示させたいのですが
どのように記述すればよいのでしょうか。

また代替案などありましたらあわせてご教授頂けますと幸いです。

A 回答 (3件)

正規表現で



$key =~ /^(
aaa|
bbb|
ccc|
ddd)$/x || &Error("$keyが不正です。");
    • good
    • 0
この回答へのお礼

正規表現を使う方法をご掲示頂けまして有難うございます。

縦に表示し簡素に見やすくて分かりやすいですね。
なるほどー。と思わされる感じで勉強になります。

有難うございました。

お礼日時:2005/06/13 15:05

自分なら、連想配列にキーとして代入しておき、目的のキーで連想配列に値があるかで判定させます。


こんな感じ:

%valid_key_table = map { $_ => 1; } qw|aaa bbb ccc ddd|;
&Error() unless defined $valid_key_table{ $key };
    • good
    • 0
この回答へのお礼

連想配列に入れておいたのを、目的のキーで値があるかを判定させるんですね。
参考になります。

mapの使い方が分かったような気がします。

ご教授頂きまして有難うございます。

お礼日時:2005/06/11 18:41

例えば $key として有効な文字列を @validkeys という配列に入れて


if (grep($_ eq $key, @validkeys)) {
...
}
がみやすいんじゃないでしょうか.
    • good
    • 0
この回答へのお礼

配列に入れておいたkeyをgrepで検索する形でも可能なんですね。そのようにも出来るとは思いませんでした。

参考にさせていただきます。有難うございました。

お礼日時:2005/06/11 18:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!