Project

General

Profile

Actions

Feature #5977

closed

Remove $, and avoid perlish global variables

Added by Eregon (Benoit Daloze) over 10 years ago. Updated over 10 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
Target version:
[ruby-core:42396]

Description

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?


Related issues 1 (0 open1 closed)

Related to Ruby master - Feature #14240: warn four special variables: $; $, $/ $\Closedjeremyevans0 (Jeremy Evans)Actions

Updated by rogerdpack (Roger Pack) over 10 years ago

+1 those are incomprehensible for beginners.

Updated by trans (Thomas Sawyer) over 10 years ago

Yes, but is is serious incompatibility and would have to wait for after 2.0, according to Matz' plans.

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.

Updated by matz (Yukihiro Matsumoto) over 10 years ago

  • Status changed from Open to Rejected

As Thomas mentioned, Ruby 2.0 would not introduce serious incompatibility. Reopen in the future (3.0?).

matz.

Actions #5

Updated by Eregon (Benoit Daloze) over 4 years ago

  • Related to Feature #14240: warn four special variables: $; $, $/ $\ added
Actions

Also available in: Atom PDF