Getting started with Moose (Was: Re: Google App Engine -- with Perl)

Tomas Doran bobtfish at bobtfish.net
Sun Jul 27 11:41:52 BST 2008


On 27 Jul 2008, at 00:40, Dave Hodgkinson wrote:
>
> I'm kind of vaguely seduced by moose, mainly by CL making antler  
> gestures.
> And the assertive, declarative nature of it.
>
> Is there anything in the wild about:
>
> 1. Cookbooky things. How to do cool stuff in isolation.

I assume that the Moose cookbook isn't what you're looking for?  
(http://search.cpan.org/~stevan/Moose-0.54/lib/Moose/Cookbook.pod)

I went from reading the basic docs, and the first few examples in  
here, through to trying to build something, and re-visiting the  
cookbook / docs when I needed / knew I didn't know how to do what I  
wanted to do (but that Moose should be able to do it for me).

Also, I can't say enough good words about the people inhabiting  
#moose - if the docs aren't making it clear to you then they will get  
you sorted out. :)

> 2. How to moosify existing shitty codebases.

There isn't too much documentation on how to do this specifically,  
but, assuming that you've already got an OO style codebase, then it  
isn't too hard - I'd probably start by working out how to act like  
whatever type of accessor generation they're using, factoring that  
out (e.g. Moose::Policy::PBP and/or  
MooseX::Emulate::Class::Accessor::Fast), and then replacing the old  
attributes with Moosey ones.. (Remembering to say 'no Moose' when you  
get back to the original code to avoid clashes with Moose symbols).

Once you've got all the setters/getters ported (and everything using  
them), you've got quite a lot of Moose's power already - e.g. the  
'handles' parameter of the attribute metaobject can be used to move  
your object logic around/install delegators for things trivially  
(useful for pushing methods down, which is one of the first things  
after enforcing basic sanity I find myself doing). There are  
obviously many more tricks that become much easier, this is just a  
trivial example.

I can't really say much about trying to convert a complex inheritance  
hierarchy to the use of roles / etc (which would probably be my next  
step), as I haven't done this yet..

Again, I'd recommend surveying the lay of the land, and then asking  
#moose about anything where you're not sure about the recommended  
approach.

Whilst I wouldn't describe Catalyst as 'shitty', it does have plenty  
of hysterical raisins, and they've ported it - so I would conclude  
that it's possible, and that there is a load of experience porting  
stuff floating around - just that there hasn't been that much writing  
down of it yet ;/

Cheers
Tom


More information about the london.pm mailing list