http://interviews.slashdot.org/article.pl?sid=02/09/06/1343222&mode=thread&tid=145

We may not agree with what Larry has to say about Ruby, but as usual he 
says it well.

The relevant part:

"As for specifics, I must say that the example of Ruby is the main reason 
I decided against implicit lexical scoping for Perl 6. We'll be sticking 
with explicit my declarations. But I have to like the majority of Ruby 
simply because that's the part that was borrowed straight out of Perl. :-) 

I also liked Ruby's unary splat operator, so I borrowed it for Perl 6. 

The main problem I see with Ruby is that the Principle of Least Surprise 
can lead you astray, as it did with implicit lexical scoping. The question 
is, whose surprise are you pessimizing? Experts are surprised by different 
things than beginners. People who are trying to grow small programs into 
large programs are surprised by different things than people who design 
their programs large to begin with. 

For instance, I think it's a violation of the Beginner's Principle of 
Least Surprise to make everything an object. To a beginner, a number is 
just a number. A string is a string. They may well be objects as far as 
the computer is concerned, and it's even fine for experts to treat them as 
objects. But premature OO is a speed bump in the novice's onramp. "

Personally, I like Ruby's scoping rules a lot better than Perl's.

Also, I think that everyting being an object is actually helpful for 
beginners - It's much easier to pick up OO programming ideas if you learn 
them first, I think.  It also tends to make things much more consistent.

Thoughts?

Phil