Project

General

Profile

Actions

Feature #8110

closed

Regex methods not changing global variables

Added by prijutme4ty (Ilya Vorontsov) over 8 years ago. Updated over 5 years ago.

Status:
Closed
Priority:
Normal
Target version:
-
[ruby-core:53498]

Description

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.


Related issues

Related to Ruby master - Feature #8206: Should Ruby core implement String#blank? OpenActions
Related to Ruby master - Feature #12306: Implement String #blank? #present? and improve #strip and family to handle unicodeOpenmatz (Yukihiro Matsumoto)Actions
Related to Ruby master - Bug #14695: [2.5.1] `===` is 1.77x slower than `match?`ClosedActions
Actions

Also available in: Atom PDF