From: Tanaka Akira <akr@...> Date: 2008-04-23T18:03:19+09:00 Subject: [ruby-dev:34492] regexp match confused by thread. 以下のプログラムで、$~.size は、/((ab)*(ab)*)*b/ には括弧が 3つ入っているため、4 を表示するはずなのですが、1 が表示され ます。 % ./ruby -ve ' Thread.new { loop { // =~ "abc" } } sleep 1 5.times { /((ab)*(ab)*)*b/ =~ "ab"*8 p $~.size } ' ruby 1.9.0 (2008-04-23 revision 16172) [i686-linux] 1 1 1 1 1 以下のように、最初に起動するスレッドを除去すると、意図どおり に 4 が表示されるようになります。 % ./ruby -ve ' #Thread.new { loop { // =~ "abc" } } sleep 1 5.times { /((ab)*(ab)*)*b/ =~ "ab"*8 p $~.size } ' ruby 1.9.0 (2008-04-23 revision 16172) [i686-linux] 4 4 4 4 4 -- [田中 哲][たなか あきら][Tanaka Akira]