В статье "Looking beyond Java technology for lightweight development" анализируются некоторые ограничения языка Java, успешно решенные в таком языке как Ruby.
opennet.ru
Дополню список того, что есть в Perl и нет в Ruby. Есть scalar ($num = 12; $str = "abc") и scalarref ($ref1 = \$num; $ref2 = \$str). Посему базисные типы можно и через value передать в функцию и через reference (это кроме магического свойства @_ действующего на lvalue). В Ruby - только через reference (хотя там есть многочисленные механизмы копирования значений и array explode тоже).