- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ハッシュの要素の取り出し方)
ハッシュの要素の取り出し方についての困りごと
このQ&Aのポイント
- ハッシュの要素の取り出し方で困っています。配列にハッシュをpushし、HTMLタグに埋め込もうとしていますが、結果が正しく出力されません。
- foreach文の中ではHTMLタグが繰り返し出力されてしまいますが、別の変数の場合は正しく出力されます。
- どうすれば正しく出力できるか教えていただけますでしょうか。
- みんなの回答 (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; とでもして、コピーを作ってからそれに対して操作してやればよろしいかと。
お礼
ご回答ありがとうございます。 コピーを作ってから埋め込む処理に変えてから 思うような結果になりました。 とても助かりました。