こんにちは、越水です。

String#sub!()についてです。

次のプログラムをRuby 1.1.c3 made in x86Linuxと、
Ruby 1.1c4 made in MkLinuxで実行したところ、
私の予想と違った結果になりました:

str = "a b"
str.sub!(/\A\S+/, "A")
puts($&)
puts(str)
str.sub!(/\A\S+/, "")
puts($&)
puts(str)

結果です:

a
aA b
aA
aA b

私が予想していた結果は:

a
A b
A
 b

というものです。

Rubyのバグでしょうか、それとも私の勘違いでしょうか?

越水 (greentea / fa2.so-net.ne.jp)