Perl 是极好的。Perl的文档非常棒。Perl 的社区也……非常棒。然而，Perl 语言相当的大且复杂。对于渴望一个更简单、内置优雅的面向对象特性的 Perl 使用者来说, Ruby可能适合你。

### 相似点

Ruby 与 Perl 一样的地方……

* 与 CPAN 相似的包管理系统（尽管叫做 [RubyGems][1]）。
* 内置正则,尽情享用吧！
* 内置相当大数量的常用库。
* 括号通常是可选的。
* 字符串基本上一样。
* 与 Perl 类似，有通用字符串分隔和正则表达式引用的语法。看起来像 `%q{这样}`（单引号）、`%Q{这样}` (双引号)和 `%w{这 是 单 引 号 单 字 列 表}`。如果喜欢，你也 `%Q|可以|` `%Q(这样)` `%Q^使用^`。
* 大括号变量插值，尽管它  `"看起来#{like}这样"` （你可以将任何 Ruby 代码放进 `#{}` 中）。
* 使用反引号调用 shell 命令。
* 拥有嵌入式文档工具（Ruby 的工具叫 rdoc）。

### 相异点

Ruby 与 Perl 不同的地方……

* 没有像 Perl 一样的上下文依赖规则。
* 变量和它引用的对象不一样。取而代之的是，变量只是指向对象的引用。
* 尽管 `$` 和 `@` 有时会作为变量的首字母，它们用来标明作用域（`$` 代表全局, `@` 用于实例变量,
`@@` 用于类属性），而不是标明类型。
* 列表字面量在方括号内，而不是圆括号内。
* 列表组合不会将他们展开为一个大的列表，而是得到一个列表的列表。
* `def` 代替 `sub`。
* 每行结尾不需要分号。值得一提的是函数、类和分支定义以关键字 `end` 结尾。
* 对象是强类型。类型间转换时需要手动调用 `foo.to_i`、 `foo.to_s` 等。
* 没有 `eq`、 `ne`、 `lt`、 `gt`、 `ge`、 也没有 `le` 。
* 没有钻石操作符（`<>`），通常需要使用 `IO.some_method` 代替。
* 胖箭头 `=>` 用于哈希字面量。
* 没有 `undef`。Ruby 中有 `nil`。 `nil` 是一个对象（与 Ruby 其他东西一样）。和未定义的变量也不一样。作为布尔值时，它是假值。
* 判断真值时，只有 `false` 和 `nil` 当做假值。其余一切皆为真（包括 `0`、 `0.0`、 `""` 和 `[]`）。
* 没有 [PerlMonks][2]。 但是 ruby-talk 邮件列表是一个能获取到帮助的地方。

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