Von Ruby nach Perl
Perl ist großartig. Perls Doku ist großartig. Die Perl-Community ist … großartig. Für jene Perler, die sich von Anfang an elegante OO-Features wünschen, könnte Ruby etwas für Sie sein.
Ähnlichkeiten
Wie bei Perl, in Ruby,…
- Sie haben ein Paketverwaltungssystem, ähnlich wie CPAN (obwohl es RubyGems heißt).
- Regex sind eingebaut. Guten Appetit!
- Es gibt eine ziemlich große Anzahl von häufig verwendeten Built-ins.
- Klammern sind oft optional.
- Strings funktionieren im Grunde gleich.
- Es gibt eine allgemeine Syntax für Zeichenketten und Regex-Quoting, ähnlich wie bei Perl. Sie sieht aus wie
%q{dies}(einfach Anführungszeichen) oder%Q{dies}(doppelte Anführungszeichen) und%w{dies für eine Liste von Wörtern mit einfachen Anführungszeichen}. Sie können%Q|verwenden|%Q(andere)%Q^Begrenzer^, wenn Sie möchten. - Sie haben doppelte Anführungszeichen für Variableninterpolation, obwohl sie
"so #{wie} das aussieht"(und Sie können jeden beliebigen Ruby-Code in dieses#{}einfügen). - Shell-Befehlserweiterung verwendet
`Backticks`. - Sie haben eingebettete Doku-Tools (Rubys heißt rdoc).
Unterschiede
Im Gegensatz zu Perl, in Ruby,…
- Sie haben nicht die kontextabhängigen Regeln wie bei Perl.
- Eine Variable ist nicht dasselbe wie das Objekt, auf das sie verweist. Stattdessen ist sie immer nur ein Verweis auf ein Objekt.
- Obwohl
$und@manchmal als erstes Zeichen in Variablennamen verwendet werden, anstatt den Typ anzugeben, geben sie den Geltungsbereich an ($für Globale,@für Objektinstanzen und@@für Klassenattribute). - Array-Literale werden in Klammern statt in runden Klammern gesetzt.
- Das Zusammensetzen von Listen aus anderen Listen ergibt keine einzige große Liste. Stattdessen erhalten Sie ein Array von Arrays.
- Es ist
defstattsub. - Am Ende jeder Zeile sind keine Semikolons erforderlich. Übrigens beenden Sie Dinge wie Funktionsdefinitionen, Klassendefinitionen und Case-Anweisungen mit dem Schlüsselwort
end. - Objekte sind stark typisiert. Sie werden manuell
foo.to_i,foo.to_susw. aufrufen, wenn Sie zwischen Typen konvertieren müssen. - Es gibt kein
eq,ne,lt,gt,geoderle. - Es gibt keinen Diamond-Operator (
<>). Sie verwenden normalerweise stattdessenIO.some_method. - Das fette Komma
=>wird nur für Hash-Literale verwendet. - Es gibt kein
undef. In Ruby haben Sienil.nilist ein Objekt (wie alles andere in Ruby). Es ist keine undefinierte Variable. Es wird zufalseausgewertet, wenn Sie es wie einen booleschen Wert behandeln. - Wenn auf Wahrheit getestet wird, nur
falseundnilwerten zu einem falschen Wert aus. Alles andere ist wahr (einschließlich0,0.0und"0"). - Es gibt kein PerlMonks. Die ruby-talk Mailingliste ist jedoch ein sehr hilfreicher Ort.