• ベストアンサー

ループ内での置換方法について

ループ内での置換方法について 以下の内容で置換を行ってみたのですが、書き方が悪いのかうまく取得できません。 $hoge="現在のナンバーは《no》です"; for(1..3){ $hoge=~s/《no》/$_/g; print"$hoge<br>"; } 結果、noの部分は全て1となりました。 私の予定では、1、2、3と順に表示される予定でしたが・・・。 現在のナンバーは1です 現在のナンバーは2です 現在のナンバーは3です と表示されるようにするにはどのように書けばよろしいでしょうか。 どなたか教えていただけませんか。 よろしくお願いします。

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

  • ベストアンサー
  • taka37777
  • ベストアンサー率30% (166/544)
回答No.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>

hana43
質問者

お礼

丁寧に教えていただきありがとうございました。 教えていただいた事を見ながらじっくり考えたところ、私のやり方がうまくいかない理由が分かったように思います。 実際、教えていただいた通りうまくいきました。 ありがとうございました。

関連するQ&A

専門家に質問してみよう