> You can change the encoding of a string. Just jesus christ wow.<p>erm, wat?<p>Edit:<p>To refute some of the points:<p>> <i>Why on earth does defined? return a string?</i><p>Why not? Strings are perfectly valid in boolean context.<p>> <i>Using blocks for looping and callbacks</i><p>again, wat?<p>> <i>break/next/return semantics in blocks extremely bizzare</i><p>This is a somewhat valid point. Well, don't do it then, if you don't know what you're doing!<p>> <i>And they have different behavior in procs vs. lambdas</i><p>> <i>Mutable objects have a hash method and can go in Hashes. Why!!!</i><p>Why not? It is possible to shoot yourself in the leg, but otherwise a very useful feature.<p>> <i>Special case of flip-flop and regexp in an if statement (only if it appears</i><p>> <i>syntactically though!)</i><p>> <i>Setting `$=` to something truthy causes all string operations to become</i><p>> <i>case-insensitive. This and other magic globals from perl are mind blowing.</i><p>Perlisms.<p>> <i>`f {}`. Tell me what the parsing of that is.</i><p>Calling f with empty block.<p>> <i>Ruby's module system makes namespacing optional (and off by default).</i><p>So?<p>> <i>Regexp with named matches decompose into local variables. Dear lord why.</i><p>No they don't necessarily, no.<p><pre><code> 1.9.3-p327 :006 > "abcdefg".match(/(?<x>abc)/)
#<MatchData "abc" x:"abc">
1.9.3-p327 :007 > x
NameError: undefined local variable or method `x' for main:Object
</code></pre>
> <i>Encoding system is beyond broken</i><p>wat?<p>> <i>Scopes: constants, class vars, instance vars, methods, locals. wtf.</i><p>Valid point.<p>> <i>Constants aren't constant. Truth in naming.</i><p>So?<p>> <i>Thread locals are really fiber locals.</i><p>Valid point.<p>Overall, a very weak rant.