dポイントプレゼントキャンペーン実施中!

初めまして 初心者ですがよろしくお願いします
perl CGIでデーターが
名前<>商品<>金額<>
例)
田中<>商品名<>1200<>
佐藤<>商品名<>2500<>
山田<>商品名<>2000<>
田中<>商品名<>1800<>
とあるときにその方の合計金額を表示させたい場合はどうしたらよいでしょうか?
表示結果
田中さん 3000円
佐藤さん 2500円
山田さん 2000円

どなたかご指導お願いします

A 回答 (2件)

> print "$nameさんの金額は合計$kyaku{$name}[4]",


> join( ',', keys %{$kyaku{$name}[1]}),"円です<br>\n";

この結果が

> cocoa23さんの金額は合計5200,1800円です

だと思いますが、1つ確認を。

join()とは、何をどうするための物ですか?
そして、何をどうしたいのですか?

# 何をどうしたいかはわかりますが、質問者さんに再確認してもらうためです。

この回答への補足

&fl('lwa_que.lock');
open(F,"$ptfile") || &print_error("ファイルオープンエラー。");
@raiten = <F>;
close(F);
unlink("$lockdir/lwa_que.lock");

my %kyaku;
for( @raiten ){
my @dat = split /<>/;
$kyaku{$dat[1]} += $dat[3];

}


# 集計結果を出力
print "$_さんの振込み金額は合計で$kyaku{$_}円<br><hr>\n" for( sort keys %kyaku );

これでできました ありがとうございます

あと$_さんと 名前をクリックすると その方の詳細が出るように
<A href="xxxx">$_さん</A>とは できないのでしょうか?
 

補足日時:2008/11/07 12:29
    • good
    • 0

まずハッシュを作成しておく。


データを一行読み込んで、名前をハッシュのキーとして金額を可算する。
foreach文あたりで出力。

CGIに慣れてないのなら、コンソールプログラムでテストしてからCGIにしてみるといいでしょう。

この回答への補足

&fl('lwa_que.lock');
open(F,"$ptfile") || &print_error("ファイルオープンエラー。");
@raiten = <F>;
close(F);
unlink("$lockdir/lwa_que.lock");

my %kyaku;
foreach (@raiten){
my ($no, $name, $money, $kind) = split /<>/;
unless($kyaku{$name}){ $kyaku{$name} =[0, {}]; }
$kyaku{$name}[0] += $money;
$kyaku{$name}[1]{$kind}++;
}
# 集計結果を出力する。
foreach my $name (keys %kyaku){
print "$nameさんの金額は合計$kyaku{$name}[4]",
join( ',', keys %{$kyaku{$name}[1]}),"円です<br>\n";
}
こんな感じでやってみましたが
金額が合計されません
arisaさんの金額は合計1500円です
hitozumaさんの金額は合計2200,2000円です
cocoa23さんの金額は合計5200,1800円です

補足日時:2008/11/06 07:11
    • good
    • 0

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