Remove $, and avoid perlish global variables
As I mentioned at RubyConf, I would like the $, global variable to be removed for 2.0.
I would like to avoid "perlish" global variables in general, but I think many can't be removed for compatibility, and a few are actually useful shortcuts (mostly to the pattern matching variables). They are nice for golfing and small scripts, but I believe they hurt bigger scripts/code.
$, is used as the default separator for Array#join (and Kernel#print), and I think it causes more harm than good:
- I believe many ruby codes would fail (different and unexpected output) when setting $, , because it means a simple
ary.joinis not deterministic: you need
ary.join('')which is long and quite unexpected for a "default" behavior.
- The behavior would be much clearer (a simple method with a sensible default) and so the documentation.
- It's mostly unused, and except for trivial scripts it will just be complicated to manage as it impacts globally the output.
What do you think?
Updated by Eregon (Benoit Daloze) over 9 years ago
It is some kind of incompatibility, but I think most code does not use $, at all, thus only some rare small scripts would be affected.
However, if this is unacceptable for compatibility, please change the target.