• 締切済み

perl ハッシュの重複について、よくわかっていないので教えていただき

perl ハッシュの重複について、よくわかっていないので教えていただきたいです。。 例えば、product_id (ユニーク)、product_name、purchased_price という内容のデータを保存しようとして、このような形のものがあるとします ↓ $product{product_id}->{product_name}->{purchased_price} product_id と product_name の2つのセットには重複がないのですが、その先の、purchased_price は、1つの商品につきいくつもありえるので、このなかで重複が出てきます。 これを、同じ product_id/product_name に対して出現した purchased_price の合計を求めて1つのバリューとしたいのですが、どのようにすればよいのでしょうか。。。。 例: product_id, product_name, purchased_price {1}->{'test'}->{100} {1}->{'test'}->{200} {1}->{'test'}->{300} {1}->{'test'}->{100} とあったとしたら、これを全部足して、 {1}->{'test'}->{700} のようにしたいのですが・・・・・・・ できるのでしょうか。。。??

みんなの回答

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.1

>>これを、同じ product_id/product_name に対して出現した purchased_price の合計を求めて1つのバリューとしたいのですが、どのようにすればよいのでしょうか。。。。 単に合計を求めるだけなら、 1)データを読む 2)ハッシュ内の product_id/product_nameの数値をチェック -->値が存在したときは、その値を取り出して、加算したい値を加えて、その結果を書き戻す -->無かったなら、その値を書き込む 3)結果を書き出す データをすべて読み込んで加算したら、ハッシュ内の値を書き出す こんな感じで処理できると思いますよ。 この手のデータ処理は、ハッシュを使わないと手間がかかることが多いですね。ただ、ハッシュは、リファレンスと共に使わないと使いにくいですが、C言語でいうポインターの概念を理解している必要があることと、Perlの書籍で、このあたりを詳しく書いたものが少ないような感じで、学びずらいところですね。