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 10 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.