Perl прекрасен. Документация Perl'а прекрасна. Коммьюнити Perl ...прекрасно.
Однако, сам язык довольно обширен и сложен. Ruby подойдет тем пользователям Perl,
которые хотели бы более простого временами, более ортогонального языка с
объектно-ориентированной парадигмой, вписанной в язык с рождения.

### Сходства

Как и в Perl, в Ruby...

* имеется система пакетов, похожая на CPAN, называемая [RubyGems][1].
* настоящие, вкусные регулярные выражения, приятного аппетита!
* большое количество широко используемых встроенных инструментов.
* скобки зачастую необязательны.
* строки работают практически также.
* квотирование строк и регулярных выражений похожее (например
  `%q{одинарные кавычки}`, или `%Q{двойные кавычки}`, `%w{или такой список слов в
  одинарных кавычках}`. Можно `%Q|использовать|` `%Q(другие)` `%Q^символы^`.
* строки в двойных кавычках интерполируются, хотя это `"выглядит
  #{вот} так"` (в `#{}` может быть любой Ruby код).
* для вызова команды оболочки используются `` `обратные кавычки` ``.
* есть встроенное средство документации (rdoc).

### Отличия

В Ruby в отличие от Perl...

* нет контекстно-зависимых правил.
* переменная и объект, на который она ссылается - не одно и то же, это всегда просто
  ссылка.
* хотя `$` и `@` используются в именах переменных в качестве первого символа,
  они обозначают не тип, а область видимости (`$` для глобальных, `@` - для
  переменных объекта, а `@@` - для переменных класса).
* массив заключается в `[]`, а не `()`.
* сочетание массивов не приводит к их сложению в один массив, а возвращает массив
  массивов.
* вместо `sub` пишется `def`.
* нет необходимости в точке в запятой в конце строки - определения функций, классов
  и ветвления заканчиваются ключевым словом `end`.
* объекты строго типизированы - надо руками вызывать `foo.to_i`, `foo.to_s` и т.д.,
  если надо преобразовывать типы.
* нет `eq`, `ne`, `lt`, `gt`, `le`.
* нет `<>` ("diamond operator") - используется `IO.some_method`.
* `=>` ("fat comma") используется только в определениях хешей.
* нет `undef` - есть `nil` и это объект (как и все в Ruby), но присвоить переменной
  значение `nil` - не значит "уничтожить" ее.
* в тестах на истинность только `false` и `nil` - это ложь. Все остальное (включая
  `0`, `0.0` и `"0"`) - истина.
* нет эквивалента [PerlMonks][2]. Однако, список рассылки ruby-talk вполне может
  помочь.



[1]: http://guides.rubygems.org
[2]: http://www.perlmonks.org/
