Perl은 굉장합니다. Perl의 문서도 굉장합니다. Perl 커뮤니티도… 굉장합니다. 처음부터 내장된 우아한 객체 지향 기능을 갈망하는 Perler에게는 Ruby가 적합할 수 있습니다.
비슷한 점
Perl처럼, Ruby에서도…
- CPAN과 다소 유사한 패키지 관리 시스템이 있습니다(RubyGems라고 함).
- 정규식 라이브러리는 내장되어 있습니다. 보나페티!
- 일반적으로 사용되는 내장 기능이 상당히 많습니다.
- 괄호는 종종 생략할 수 있습니다.
- 문자열은 기본적으로 동일하게 작동합니다.
- 일반 구분 문자열 및 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는 없습니다. ruby-talk 메일링 리스트는 매우 유용한 곳입니다.