頭からまとめときますか。

>>338
> なぜこのような結果になるのでしょうか?

>>338 の前者は $text に対し s///g を一回だけ実行し、その処理過程で
複数の置換を行っている。後者は $text に対し s/// 自体を複数回実行し、
それぞれ一回ずつの置換を行っている。前者では二つ目以降のマッチ開始
位置が前回マッチの終了位置となるのに対し、後者では毎回文字列の先頭
にリセットされる為、結果も変わってくる。

>>356
ム板にもある。

正規表現 part2
http://pc8.2ch.net/test/read.cgi/tech/1131028296/

>>381 >>389
上の説明と >>399 参照。

>>393
>>394 で書かれているように、/g の処理中で逐次的に置換されるわけ
ではない。よって 2\n@\n3 ではなく2\n\n\n3 のまま。>>399 も参照。

>>397
違う事をしているのだから結果も違って当然。

(my $str = 'ababab') =~ s/ab/abc/g; # abcabcabc
# my $str = 'ababab';
# 1 while $str =~ s/ab/abc/; # 無限ループ!