Perl은 굉장합니다. Perl의 문서도 굉장합니다. Perl 커뮤니티도… 굉장합니다.
처음부터 내장된 우아한 객체 지향 기능을 갈망하는 Perler에게는 Ruby가 적합할 수
있습니다.

### 비슷한 점

Perl처럼, Ruby에서도...

* CPAN과 다소 유사한 패키지 관리 시스템이 있습니다([RubyGems][1]라고 함).
* 정규식 라이브러리는 내장되어 있습니다. 보나페티!
* 일반적으로 사용되는 내장 기능이 상당히 많습니다.
* 괄호는 종종 생략할 수 있습니다.
* 문자열은 기본적으로 동일하게 작동합니다.
* 일반 구분 문자열 및 Perl과 유사한 정규식 인용 구문이 있습니다.
  `%q{this}`(작은따옴표) 또는 `%Q{this}`(큰따옴표) 및 `%w{작은따옴표 단어 목록의 경우}`처럼
  보입니다. 원하는 경우 `%Q|can|` `%Q(use)` `%Q^other^` 구분 기호를
  사용할 수 있습니다.
* `"#{like} this"`처럼 보이지만 큰따옴표 변수 보간이 있습니다(그리고 `#{}` 안에
  원하는 Ruby 코드를 넣을 수 있습니다).
* 셸 명령 확장은 `` `backticks` ``를 사용합니다.
* 내장된 문서 도구가 있습니다(Ruby는 rdoc이라고 함).

### 다른 점

Perl과는 다르게, Ruby에서는...

* Perl과 같은 상황에 따른 규칙이 없습니다.
* 변수는 참조하는 객체와 동일하지 않습니다. 대신 항상 객체에 대한 참조일
  뿐입니다.
* `$` 및 `@`는 변수 이름의 첫 번째 문자로 사용되는 경우가 있지만 타입을 나타내는
  것이 아니라 범위를 나타냅니다.(`$`는 전역, `@`는 객체 인스턴스, `@@`는 클래스
  속성을 나타냅니다)
* 배열 리터럴은 괄호 대신 대괄호 안에 들어갑니다.
* 배열의 하위 배열을 작성해도 하나의 큰 배열로 병합되지 않습니다. 대신 배열의
  배열을 얻습니다.
* `sub`가 아니라 `def`를 사용합니다.
* 각 줄의 끝에는 세미콜론이 필요하지 않습니다. 여기에 더해 함수 정의, 클래스
  정의 및 case 문과 같은 것을 `end` 키워드로 끝냅니다.
* 객체는 강 타입입니다. 타입 간 변환이 필요한 경우 `foo.to_i`, `foo.to_s` 등을
  직접 호출해야 합니다.
* `eq`, `ne`, `lt`, `gt`, `ge`, `le`는 없습니다.
* 다이아몬드 연산자(`<>`)가 없습니다.
  일반적으로 `IO.some_method`를 대신 사용합니다.
* 두꺼운 쉼표 `=>`는 해시 리터럴에만 사용됩니다.
* `undef`가 없습니다. Ruby에는 `nil`이 있습니다. (Ruby의 다른 것처럼) `nil`은
  객체입니다. 정의되지 않은 변수와는 다릅니다. 불처럼 취급하면 `false`로
  평가됩니다.
* 참 거짓을 평가할 때 `false` 및 `nil`만 거짓 값으로 평가됩니다. 다른 모든
  것은 참입니다(`0`, `0.0`, `"0"` 포함).
* [PerlMonks][2]는 없습니다. ruby-talk 메일링 리스트는 매우 유용한 곳입니다.



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