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

お世話になります。

フォームから送られてくるデータを動的に作ったハッシュで参照出来るように取り組んでるんですが、思ったように出来ず思い悩んでおります。

どうすれば、意図した形でデータを取り出すことが出来ますでしょうか

my %FORM = (
'd01' => 'あ',
'd02' => 'い',
'd03' => 'う',
'd04' => 'え',
'd05' => 'お',
'd06' => 'か',
'd07' => 'き',
'd08' => 'く',
'd09' => 'け',
'd10' => 'こ',
);

for(sort { $FORM{$a} cmp $FORM{$b} } keys %FORM){
print "$_ = $FORM{$_} \n";
}

$list="d01,d02,d03,d04,d05,d06,d07,d08,d09,d10,";
$i=-1;
foreach (split/,/,$list){
$i++;
$hash{$_}=$i;
}

for(sort { $hash{$a} <=> $hash{$b} } keys %hash){
print "$_ = $hash{$_} \n";
$view = ${"FORM$_"};
print "$view\n";
};

最後のprint "$view\n";箇所で、
$list="d01,d02..."

split/,/,$list
したので、
$FORM{d01}
$FORM{d02}
となるようにして、
「あ い う え お」と取り出したいのです。

ご教授のほど、よろしくお願い致します。

A 回答 (2件)

print $FORM{$_} foreach (sort {$hash{$a} <=> $hash{$b} (keys %hash))



ではだめなのかな
    • good
    • 0
この回答へのお礼

ご掲示頂いたものは、エラーになりましたが、print文を最初に持ってくるのは、考えが及びませんでした。
なるほどですね。勉強になります。

で、それを元に考えた所、普通のハッシュで対応可能なんだと言う事が改めて分かりました。そっかー簡単な事だったんですね。

後、ご掲示頂いた情報を元に、配列に代入して同様に解決可能なのも分かりました。ありがとうございます。

my@lines= split(/,/,$list);
print "\@lines=@lines\n";

print "--------------\n";
foreach(@lines){
print "$_ = $FORM{$_} \n";
}
print "--------------\n";
for(sort { $hash{$a} <=> $hash{$b} } keys %hash){
print "$_ = $FORM{$_} \n";
# print "$_ = $hash{$_} \n";
};

お礼日時:2011/05/03 21:56

「思ったようにできない」とは, 具体的にはどう「思ったようにできない」のですか?


・意図した出力
・実際の出力
をそれぞれ示してください.

まあ, 確かに最後の
$view = ${"FORM$_"};
はおかしいけどね....
    • good
    • 0

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