Perl е чудесен език, с богата документация и прекрасно общество. Въпреки това езикът е неприветлив и сложен. Ruby наследява много от нещата, направили Perl икона в някои програмистки среди.
Прилики
Както в Perl, така и в Ruby …
- Съществува пакетна система, подобна на CPAN (наречена RubyGems)
- Регулярните изрази са вградени в езика. Бон Апети !
- Скобите са често пренебрегвани и неизползвани
- Низовете работят по същия начин.
- Налична е интерполация на низове, оградени с двойни кавички –
"#{obj.size}"
- Използването на шел команди се изпълнява в обратни
`кавички`
. - Разполагате с вградено средство за документация (В Ruby се казва rdoc).
Разлики
За разлика от Perl, в Ruby …
- Липсват контекстно-зависими правила, както в Perl.
- Променливата не представлява обекта, който сочи. В Ruby променливите са референция към обект.
- Въпреки, че
$
и@
се ползват като първи символ в името на променливите, те не се ползват за идентификация на типа, а за идентификация на обхвата ($
за глобална променлива,@
за инстанция на обект и@@
атрибут на класа). - Масивите се означават с квадратни скоби
- Създаването на списък от други списъци запазва структурата си, а не ги обединява в един глобален списък. Получава се масив в масива.
- Вместо
sub
, имамеdef
. - Няма нужда от точка и запетая в края на реда. Евентуално за край на
дефиниция на метод, клас или условен израз се ползва ключовата дума
end
. - Обектите са strongly typed, което значи, че трябва да използвате
foo.to_i
,foo.to_s
и т.н, за конвертиране на типове. - Липсват
eq
,ne
,lt
,gt
,ge
илиle
. - Липсва оператора
<>
. Вместо това се ползваIO.метод
. =>
се използва само за хеш литерали.- Липсва
undef
. Вместо това имаме имамеnil
.nil
е обект (както всичко друго в Ruby) и няма значение на недефинирана променлива. - Когато тестваме за истинност, само
false
иnil
представляват лъжа. Всичко друго е истина (включително0
,0.0
,""
и[]
). - Липсва PerlMonks. Вместо това имаме ruby-talk пощенски списък.