O Perl é espectacular. A documentação do Perl é espetaculares. A Comunidade de Perl é… incrível.
Semelhanças
Tal como em Perl, em Ruby…
- Existe um sistema de gestão de pacotes, semelhante ao CPAN (chamado RubyGems)
 - O Tratamento de Expressões Regulares (Regexes) está embutido na linguagem. Bon appétit!
 - Existe um número bastante razoável de funcionalidades nativas de uso frequente.
 - Os parênteses são frequentemente opcionais.
 - As strings funcionam essencialmente da mesma forma.
 - Existe uma sitaxe de delimitação de strings e expressões regulares
geralmente utilizada semelhante a do Perl. Ele parece 
%q{isto}(single-quoted), or%Q{isto}(double-quoted) e%w{esta é uma lista de palavras single-quoted}. Você%Q|pode|%Q(usar)%Q^outros^delimitadores que você prefere. - Em Ruby existe interpolação de váriaveis entre aspas, 
"aplica-se #{desta} forma"(o código ruby é colocado entre#{}). - A execução de comandos de sistema através da Shell faz-se com
`backticks`. - O Ruby possui ferramenta de documentação embutida (Em Ruby é chamado RDoc).
 
Diferenças
Ao contrario do Perl, no Ruby…
- Não existem as regras dependentes do contexto como no Perl.
 - Uma variável não é o mesmo que o objeto ao qual se refere. Em vez disso é sempre um referencia para um objeto.
 - Apesar de 
$e@serem utilizados por vezes como os primeiros caracteres nos nomes das variaveis, em vez de indicar o tipo, indicam o escopo$para variáveis globais,@para instâncias de objetos, e@@para atributos de classe). - Os elementos de um Array são colocados entre colchetes em vez de parênteses.
 - Criar listas de listas não as reduz a uma grande lista, em vez disso obtem-se um array de arrays.
 - Utiliza-se 
defem vez desub. - Não são necessários ponto e vírgula (;) no final de cada linha. As
definições de funções, classes e estruturas 
caseterminam com a palavraend. - Os objetos têm tipagem forte. É necessário invocar manualmente os
métodos 
foo.to_i,foo.to_s, etc., se for necessário converter entre tipos. - Não existem 
eq,ne,lt,gt,ge, nemle. - Não existe ‘diamond operator’ (
<>). Usualmente utiliza-seIO.alguma_funçao. - O simbolo 
=>é utilizado somente para os elementos de uma tabelas de hash. - Não existe 
undef. Em Ruby utiliza-se a expressãonil.nilé um objeto (tal como tudo o resto em Ruby). Não é o mesmo que uma variável indefinida. Toma sempre o valorfalsese for tratada como um booleano. - Quando é feito um teste booleano, somente 
falseenildevolvem um valor falso. Tudo o resto é verdadeiro (incluindo0,0.0e"0"). - Não há um PerlMonks. Embora a mailing list do ruby-talk seja um site muito amigável.