if文が長くなってもわかりやすい方がいいと思うんだけどね
スポンサードリンク
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]
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/1694
どもどもです。
http://perltidy.sourceforge.net/node006.html
ですな。
そういえばハッシュのなかに「=> 1」ってしていますが、「=> true」とかってできるのでしょうか。<試せよ