• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ハッシュの要素の取り出し方)

ハッシュの要素の取り出し方についての困りごと

このQ&Aのポイント
  • ハッシュの要素の取り出し方で困っています。配列にハッシュをpushし、HTMLタグに埋め込もうとしていますが、結果が正しく出力されません。
  • foreach文の中ではHTMLタグが繰り返し出力されてしまいますが、別の変数の場合は正しく出力されます。
  • どうすれば正しく出力できるか教えていただけますでしょうか。

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

foreach $tag (@html_tag) {   $tag =~ s/\$syubetu/$_->{"syubetu"}/gm;   $tag =~ s/\$name/$_->{'name'}/gm;   $tag =~ s/\$age/$_->{'age'}/gm;   print $tag; } の後で @html_tagの内容をチェックしてみてください。 内容が変更されていると思います。 上記のようなループの場合、$tagは@html_tagの要素のコピーではなく エイリアス(別名)になります。つまり、$tagを書き換えることによって 元の配列要素にも影響が及びます。このため、二番目以降の要素に 関しての置換は条件が成り立たないのでまったく行われません (一回目の置換結果がそのまま残る)。 ですので、 foreach $tmp (@html_tag) { $tag = $tmp; とでもして、コピーを作ってからそれに対して操作してやればよろしいかと。

natukimm
質問者

お礼

ご回答ありがとうございます。 コピーを作ってから埋め込む処理に変えてから 思うような結果になりました。 とても助かりました。