Jeff Wood wrote:

> Quite simply, Ruby is *supposed* to be about consistency ... Having the 
> "everything is an object, principal of least surprise" mantra, then 
> using these which act like a global ( $ ) but aren't actually ( local 
> scope ) is just vile.

You have made a common mistake, you are thinking Ruby is meant for your 
principle of least surprise, when it is matz's least surprise...

Quoting Matz,

"Besides that, he doesn't understand what POLS means.  Since someone
will surprise for any arbitrary choice, it is impossible to satisfy
"least surprise" in his sense.  The truth is two folds: a) when there
are two or more choices in the language design decision, I take the
one that makes _me_ surprise least. "

http://groups.google.com/group/comp.lang.ruby/msg/875965f29cfb77bc

Zach