Bug #7678
Updated by nobu (Nobuyoshi Nakada) almost 12 years ago
=begin ((|$_|)) $_ and ((|$~|)) $~ have thread local method scope, but are shared across fibers in same thread. $ ./ruby -v -e '/a/ =~ "a"; p $~; Fiber.new{/b/=~"b"; p $~}.resume; p $~' ruby 2.0.0dev (2013-01-09 trunk 38748) [x86_64-darwin11] #<MatchData "a"> #<MatchData "b"> #<MatchData "b"> But, it is cleared at (({Fiber.start})). Fiber.start. $ ./ruby -v -e '/a/ =~ "a"; p $~; Fiber.new{p $~}.resume; p $~' ruby 2.0.0dev (2013-01-09 trunk 38748) [x86_64-darwin11] #<MatchData "a"> nil nil These two behaviors seem mismatched. I think: * If they should be shared, then the latter example should show same (({MatchData})) MatchData 3 times. * If they should be cleared at starting fibers, those variables in the original fiber should be unchanged. =end