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