[ruby-core:96429] [Ruby master Bug#16448] regex global variables are working differently depend on scope
From:
tdrive@...0de.ru
Date:
2019-12-23 13:31:29 UTC
List:
ruby-core #96429
Issue #16448 has been reported by tdrive (Станислав sdfsdfdsfs).
----------------------------------------
Bug #16448: regex global variables are working differently depend on scope
https://bugs.ruby-lang.org/issues/16448
* 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>