Oт Perl към Ruby

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