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 пощенски списък.