電子書籍の厳選無料作品が豊富!

formで送られてきたデータは全てハッシュinで整理しています
様々なデータの中に、$in{way_1}, $in{way_2}.....というかたちでformから送っているものがあるのですが、それぞれにvalueがあるのか分からないので、ループをかけて検証したいと思っています
if($in{way_1}){ push(@ok, "1"); }
if($in{way_2}){ push(@ok, "2"); }
.....
とやれば話は早いですが、way_がいくつまであるかが状況によって違うため、最大値までループで確認したいと思っています
そこで次のようにやってみましたが、うまくいきません

my $i = 1;
while($i <= $max){
if($in{way_$i}){ push(@ok, $i); }
$i++;
}

Internal Server Errorが出たのですが、おそらくハッシュのキーの中の一部に変数を入れたがためだと思われますが、これに変わる検証方法はないでしょうか?

ちなみにあたりまえですが、次のようにやってみても、単なる文字列として認識されてしまうので、うまくいきませんでした

my $i = 1;
while($i <= $max){
$temp = '$in{way_'.$i."}";
if($temp){ push(@ok, $i); }
$i++;
}

A 回答 (1件)

"way_$i"


でいいんじゃね?

あるいは keys 使うとか.
    • good
    • 0
この回答へのお礼

ありがとうございました
$in{way_$i}ではなく、$in{"way_$i"}としたところうまくいきました
大変勉強になりました

お礼日時:2012/02/29 16:28

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