M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2006年6月 6日 02:55

if文が長くなってもわかりやすい方がいいと思うんだけどね

このエントリーをはてなブックマークに追加 mixiチェック

D.T.P.+営業メモ - 初心者的質問。if文の判定の式が長くなりすぎるのはどーすりゃいいんだ。 [d.hatena.ne.jp]

 $_ = $data{'To'};
    if ((/\@yahoo\.co\.jp/gi) || (/\@msn\.com/gi) || (/\@hotmail\.com/gi) || (/\@hotmail\.co\.jp/gi)) {
 
 <なんかの処理>
 
    }

これの「\@yahoo\.co\.jp」「\@msn\.com」がどんどん増やしていこうと思うとなんだかソースが汚くなってしまう。 いっぱい数が増えても大丈夫で簡単で綺麗な書き方ってあるのかしらん。配列あたりなのかね。

$_ = $data{'To'};
  if ((/\@yahoo\.co\.jp/gi) 
    || (/\@msn\.com/gi)
    || (/\@hotmail\.com/gi)
    || (/\@hotmail\.co\.jp/gi)
    ) {
 
     <なんかの処理>
 
  }

でも充分だと思います。

配列じゃなくてハッシュを使うとこんな感じ。

#!/usr/bin/perl
use strict;
use warnings;
 
my %data;
$data{'To'} = 'a@msn.com';
 
# ハッシュでリストつくる
my %DomainList = (
  'yahoo.co.jp'   => 1,
  'msn.com'       => 1,
  'hotmail.com'   => 1,
  'hotmail.co.jp' => 1,
);
 
#メールアドレスからドメインだけ取り出す
(my $domain = $data{'To'}) =~s/.+@//;
 
# ハッシュの中にドメインがある?
if ( $DomainList{$domain}) {
  print ("処理するよ\n");
}

でいいんじゃないでしょうか。

ここなんか参考になるとおもいます。

jnaoyaのはてな日記 - 添削 [d.hatena.ne.jp]

投稿 大野 義貴 [Perl] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/1694

コメント(1)

どもどもです。
http://perltidy.sourceforge.net/node006.html
ですな。

そういえばハッシュのなかに「=> 1」ってしていますが、「=> true」とかってできるのでしょうか。<試せよ

コメントする