先日会社の tech channel で話題になったのでメモ。Rubiest の方々にとっ
ては常識なんですかね…?

$ ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin15]

$ ruby -e 'raise "aaa" rescue  p $!'
#<RuntimeError: aaa>

$ ruby -e 'raise "aaa" rescue  p $ERROR_INFO'
nil

$ ruby -r English -e 'raise "aaa" rescue  p $ERROR_INFO'
#<RuntimeError: aaa>

Ruby はグローバル変数の初期値が nil なのがたちが悪い。個人的にはも
う $ERROR_INFO とかは使わないと思う。

C: Prefer $ERROR_INFO from the stdlib ‘English’ module over $!.

RuboCop 先生がこのようにお怒りだったので、出来るだけ長い変数名を使
うようにしていましたが、行間を読む必要があったみたいです。
=> require ‘English’ も必要。

関連情報

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/9271

まつもと ゆきひろです

In message “[ruby-dev:9270] Re: bang method returns string always”
on 00/02/23, GOTO Kentaro <gotoken / math.sci.hokudai.ac.jp> writes:

|>$~などの記号でない代替が必要だろうとは昔から思ってるんです。
|
|English.rb を組み込みにするのはどうですか??

記号変数の撲滅と言う観点では前進ですが、$の削減と言う観点か
らは前進じゃないんですよねえ。

そういえば、まつもとさんは長い変数名が好きではないと、rebuild.fm
155158 で話してました。

http://perldoc.jp/docs/perl/5.20.1/perlvar.pod

以下の名前は Perl では特別な意味を持ちます。 記号的な名前の多くは記憶法があるか、シェルでの類推が可能です。 それでも長い名前を使用したい場合には

use English;

とプログラムの最初に書いてください。

Perl 由来らしい。

関係ないけど Perl(真珠)は Shell(殻)に対応(?)していたのですね。