- ベストアンサー
foreach内での$_の書き換え
数年前にハッシュのデータをforeachで取り出す時、$_をいじると、$_はハッシュのデータと直接つながっているので、ハッシュのデータ(keyは変わらずvalueのほう)が書き換わってしまうと聞き、実際にやってみて書き換わってしまった覚えがあります。 %hash = ("red" => "aka", "green" => "midori", "blue" => "ao", "black" => "kuro"); foreach (%hash){ print "$_<br>\n"; $_ = "modify"; } print "<hr>\n"; foreach (values %hash ){ print "$_<br>\n"; } ↓↓↓↓↓↓html↓↓↓↓↓↓↓ blue ao green midori red aka black kuro ------------------------------------ modify modify modify modify ↑となったはず 先日それを試してみたら書き換わりませんでした。 以前は確かに書き換わった覚えがあります。 perlの仕様が変わったのでしょうか。それとも私が何か間違っているのでしょうか。 詳しい方にお教えいただければと質問しました。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (2)
- kabaokaba
- ベストアンサー率51% (724/1416)
回答No.3
- sakusaker7
- ベストアンサー率62% (800/1280)
回答No.1
お礼
度々のご回答ありがとうございます。 な、なるほどぉ。 確かにniftyはperl5としか書いてなく、モジュールも使えません。 わざわざ試してくださったんですね。 >どうも途中で仕様が変わったみたいですね。 5.6とか5.8に上がったタイミングかなあ? 合点がいき、スッキリしました。 どうもありがとうございました。