- ベストアンサー
ループ内での置換方法について
ループ内での置換方法について 以下の内容で置換を行ってみたのですが、書き方が悪いのかうまく取得できません。 $hoge="現在のナンバーは《no》です"; for(1..3){ $hoge=~s/《no》/$_/g; print"$hoge<br>"; } 結果、noの部分は全て1となりました。 私の予定では、1、2、3と順に表示される予定でしたが・・・。 現在のナンバーは1です 現在のナンバーは2です 現在のナンバーは3です と表示されるようにするにはどのように書けばよろしいでしょうか。 どなたか教えていただけませんか。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
1回目のループで$hogeの内容は「現在のナンバーは1です」に変わるので、 次にこれを2に変更したいときは、「1」を「2」に置き換える必要があります。 下記のように$hogeの内容を$hoge2に入れて、置換すると表示されます。 ただ置換をせずに表示する場合は、printfを使った方が簡単です。 $hoge="現在のナンバーは《no》です"; for(1..3){ $hoge2=$hoge; $hoge2=~s/《no》/$_/g; print"$hoge2<br>"; } 現在のナンバーは1です<br>現在のナンバーは2です<br>現在のナンバーは3です<br> ----- for(1..3){ printf "現在のナンバーは%dです<br>", $_; } 現在のナンバーは1です<br>現在のナンバーは2です<br>現在のナンバーは3です<br>
お礼
丁寧に教えていただきありがとうございました。 教えていただいた事を見ながらじっくり考えたところ、私のやり方がうまくいかない理由が分かったように思います。 実際、教えていただいた通りうまくいきました。 ありがとうございました。