Issue #16448 has been updated by tdrive (ѧߧڧݧѧ sdfsdfdsfs).


It is very unexpected.( 
Thank you.

----------------------------------------
Bug #16448: regex global variables are working differently depend on scope
https://bugs.ruby-lang.org/issues/16448#change-83353

* Author: tdrive (ѧߧڧݧѧ sdfsdfdsfs)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin18]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN
----------------------------------------
Hi, everyone.

I am trying to write a code similar on this

``` ruby
#!/usr/bin/env ruby

def check(f1)
  f2 = ->(match) { p match; p $~ }
  
  data = "hello test test test"
  
  data.gsub(/test/, &f1)
  data.gsub(/test/, &f2)
end

check(->(match) { p match; p $~ })
```

output:
```
"test"
nil
"test"
nil
"test"
nil
"test"
#<MatchData "test">
"test"
#<MatchData "test">
"test"
#<MatchData "test">
```

ruby versions:
`ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin18]`
`ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin18]`


Why the global variable (`$~`) in f1 and f2 are working differently? It's a bug or my mistake?




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>