カレッヂ |
質問者 よっしー
投稿日 5/12(土) 01:00:35
$roundの数値が大きい順にソートさせて selectに当てはめ$roundの総和数を表示したいのですが 行き詰まって困ってますアドバイスお願いします。 print "<td><select name=email>\n"; print "<option value=\"\">送信先を選択\n"; open(IN,"$logfile") || &error("Log Open Error"); # 多回数順にソート $total = 0; foreach $line (@lines) { ($no,$name,$email,$round) = split(/<>/,$line); $total += $round; $name{$no} = $name; $email{$no} = $email; $round{$no} = $round; } foreach (sort { ($round{$b} <=> $round{$a}) || ($a cmp $b)})) { # 結果を表示 print "<option value=\"$email{$_}\">$name{$_}\n"; } print "</select></td></tr>\n"; |
回答者 アンジェラ
[削除]
投稿日 5/16(水) 01:06:35
>foreach (sort { ($round{$b} <=> $round{$a}) || ($a cmp $b)})) { sort すべき LIST が指定されていません。) の数も多いですね。 foreach (sort { ($round{$b} <=> $round{$a}) || ($a cmp $b)} keys %round) { こんな感じでしょうか。 |
質問者 よっしー
[削除]
投稿日 5/16(水) 08:53:03
回答ありがとうございました出来ました! @lines = <IN>; close(IN); ってのも抜けてたようです(^-^; ↓こうなりました print "<tr><td><font face=\"Verdana\">Mailto</td>\n"; print "<td><select name=email>\n"; print "<option value=\"\">送信先を選択\n"; open(IN,"$logfile") || &error("Log Open Error"); @lines = <IN>; close(IN); # ソート処理 $total = 0; foreach $line (@lines) { ($no,$name,$email,$round) = split(/<>/,$line); $total += $round; $round{$no} = $round; $email{$no} = $email; $name{$no} = $name; } foreach (sort { ($round{$b} <=> $round{$a}) || ($a cmp $b)} keys(%round)) { # 結果を表示 print "<option value=\"$email{$_}\">$name{$_}\n"; } print "</select></td></tr>\n"; |
このページは終了したので返信(回答)は書きこめません
Web裏技 |