Issue #5977 has been updated by Benoit Daloze.


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.
----------------------------------------
Feature #5977: Remove $, and avoid perlish global variables
https://bugs.ruby-lang.org/issues/5977

Author: Benoit Daloze
Status: Open
Priority: Normal
Assignee: 
Category: core
Target version: 2.0.0


Hello,

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.join` is 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?


-- 
http://bugs.ruby-lang.org/