• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:perlが分かりません。)

perlが分かりません

このQ&Aのポイント
  • ドメイン変更に伴い、通販ソフトの入れ替えを行った際に、購入ボタンを押すとエラーが発生。
  • エラーメッセージは「Can't use an undefined value as a HASH reference at ../tk3lib/Design/TkBasketTable.pm line 662.」。
  • 該当箇所は、商品・在庫情報取得の処理で、商品情報と在庫情報を取得している。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

> 該当行は、下から3行目あたりになります 「あたり」と言われても困りますが... >my %RecGoods = %{$GoodsList[0]}; だとすると、ここでundefine(未定義値)をハッシュとして使おうとしている、というエラーが出ているので、 $GoodsList[0] が undefine つまり、定義されていない ということは、@GoodListが空のリスト、ということになります。 >my @GoodsList = @{$GoodsHash{RecordList}}; なので、$GoodsHash{RecordList}が空のリスト(へのリファレンス)となり >%GoodsHash = ( > RecordList => $GdsDB->{RecordList}, なので、 $GdsDB->{RecordList} が空、ということになります。 >my %where = ( GoodsID=>$RecBasket{GoodsID} ); > $GdsDB->load_data({ where=>\%where }); なので、考えられるのは ・whereに一致するレコードが無い ・whereの条件が間違っている ・データベース自体が間違っている のいずれかです。 とりあえず、 %RecStockと同様に、空かどうかの判定を入れて my %RecGoods = () ; %RecGoods = %{$GoodsList[0]} if ($GoodsHash{RecordCount} > 0); とすれば、ここでのエラーは無くなるはずです。 正しい対処かどうかは、プログラム全体を見ないと判断できませんが。

関連するQ&A