From: "prijutme4ty (Ilya Vorontsov)" Date: 2013-03-18T18:26:25+09:00 Subject: [ruby-core:53498] [ruby-trunk - Feature #8110][Open] Regex methods not changing global variables Issue #8110 has been reported by prijutme4ty (Ilya Vorontsov). ---------------------------------------- Feature #8110: Regex methods not changing global variables https://bugs.ruby-lang.org/issues/8110 Author: prijutme4ty (Ilya Vorontsov) Status: Open Priority: Normal Assignee: Category: Target version: It is useful to have methods allowing pattern matching without setting global variables. It can be very hard to understand where the problem is when you for example insert a string like `puts pat === my_str` and your program fails in a place which is far-far away from inserted place. This can happen due to replacing global variables of previous pattern match. I caught to this when placed pattern-match inside case-statement and shadowed global vars which were initially filled by match in when-statement. For now one can extract pattern matching into another method thus defining method-scope for that variables. But sometimes it looks like an overkill. May be simple method like #match_globalsafe can prevent that kind of errors. At least when a programmer see such a method in a list of methods, he's warned that usual match can cause such problems. -- http://bugs.ruby-lang.org/