You can't have good OO "outside" your language. You can't duct tape some OO to a language and consider it done.
That's classic: PHP guy say, "we have objects in PHP5 so now it is Object Oriented".
It's not. To say that language is Object Oriented because it has classes is like to say that language is Functional because it has functions.
So, Moose is a clever thing, but does it make every hash an object (I genuinely wonder)? Does it provide OO API for I/O? With exceptions? Does it make everything behave consistently? Because consistency seems to be the main reason that Perl did not become the final stop.