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 메일링 리스트는 매우 유용한 곳입니다.