- 1 名前:nobodyさん mailto:sage [2008/02/25(月) 19:25:51 ID:???]
- Perlのコーディングで困ってる人のスレです。
【投稿する際の注意】 質問するときは内容をよく吟味してから投稿してください。 「コマンドの意味がわかんない」とかはマニュアル見ましょう。 回答者さんは何でも屋じゃありません。 1: 自分はこういう事がしたい。 2: それでこんな風にやってみたが・・・ 3: こんなエラーが出て上手く行かなかった。 最低でも1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。 お勧めサイトは >2 以降 前スレ pc11.2ch.net/test/read.cgi/php/1189939783/ 過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
- 113 名前:nobodyさん mailto:sage [2008/03/14(金) 00:34:03 ID:???]
- $aaa=1;
if($aaa==1||$aaa==3) if ($aaa =~ /^[13]$/) こんなのできないこともないけど、そのままでいいんじゃないか?
- 114 名前:111 [2008/03/14(金) 00:40:08 ID:jE/64EXv]
- >112
そういうやりかたもあるんですね。 >113 極端にいえば if($aaa==1||$aaa==5||$aaa==13||$aaa==17||$aaa==25||$aaa==34||) こんなに長くなってしまう。 これじゃあまりにもじゃないですか?
- 115 名前:nobodyさん mailto:sage [2008/03/14(金) 01:07:31 ID:???]
- $aaa==9 や $aaa==21 が入ってなくて $aaa==34 が出てくるから
長くなるんだと思う。
- 116 名前:nobodyさん mailto:sage [2008/03/14(金) 01:13:26 ID:???]
- ありえる数字を列挙させて、それのチェック対象が1つの変数なら
1つの変数に対して配列で一気にチェックできた気がする grep 使ったような使わなかったような・・・ごめん。 俺にはもう無理w
- 117 名前:nobodyさん mailto:sage [2008/03/14(金) 01:41:34 ID:???]
- 長くて見づらいけど、処理量が多くて重くなるよりはマシかな。
そんな劇的な違いは無いとしても気分的になんとなくw
- 118 名前:nobodyさん mailto:sage [2008/03/14(金) 01:51:12 ID:???]
- 重いと言っても何百万回も繰り返さないから、こうしちゃうなw
if($aaa =~ /^(1|5|13|17|25|34)$/)
- 119 名前:nobodyさん mailto:sage [2008/03/14(金) 06:02:08 ID:???]
- %tmp = map { $_ , 1 } ( 1, 5, 13, 17, 25, 34 ) ;
if ( defined $tmp{$aaa} ){ print "俺の名を言ってみろ\n" ; }
- 120 名前:nobodyさん mailto:sage [2008/03/14(金) 11:41:19 ID:???]
- >>116
grep使う方法だとこうかな? if ( grep { $aaa == $_ } qw( 1 5 13 17 25 34 ) ) { # code here }
- 121 名前:nobodyさん mailto:sage [2008/03/14(金) 11:42:57 ID:???]
- # no 5.10
grep { $aaa == $_ } qw/1 5 13 17 25/; # use List::MoreUtils qw/any/; any { $aaa == $_ } qw/1 5 13 17 25/; # use 5.10 $aaa ~~ [qw/1 5 13 17 25/];
- 122 名前:nobodyさん mailto:sage [2008/03/14(金) 11:53:06 ID:???]
- ほとんどの場合、ブロックより式の方が早いので
my %tmp = map +( $_ => 1 ), ( 1, 5, 13, 17, 25, 34 ); grep $aaa == $_ ,( 1, 5, 13, 17, 25, 34 );
|

|