Este post é bem rápido e tem com objetivo mostrar o funcionamento do modulo MooseX::Declare e o efeito dele na sintaxe do código. Apesar de ser um exemplo bem simples o intuito aqui não é esgotar o assunto mas sim prover uma certa curiosidade sobre o uso deste módulo.
Para saber mais noticias sobre este módulo veja o doc em http://search.cpan.org/~flora/MooseX-Declare-0.34/lib/MooseX/Declare.pm
Sem mais delongas, vamos ao exemplo e as notas sobre o mesmo:
No exemplo acima, podemos perceber que a sintaxe na declaração da classe foi completamente “alterada”.
Na declaração da classe tivemos mudanças radicais…
package People; => class People { … }
Se olharmos bem a declaração dos atributos da classe neste exemplo vamos perceber que não mudaram muito do modo como os declarávamos usando o Moose, mas este por outro lado revolucionou e simplificou e muito a forma tradicional de se criar classes, roles e declarar atributos.
use MooseX::Declare;
class People {
# class attribute
has 'name' => ( isa => 'Str', is => 'rw' );
# method declaration
method meet_you() {
say "Prazer em conhecer você, ".
$self->name if defined $self->name;
}
}
Nos métodos também podemos ver uma mudança sutil, não vemos a linha abaixo da declaração do método as inscrições “my $self = shift;” que mesmo no Moose tradicionalmente usávamos para receber a referencia para a objeto instanciado. Esta inscrição agora implícita, simplifica ainda mais a forma com que vemos nossos métodos.
Como vimos no exemplo acima, em Perl nós temos mais de uma maneira de se fazer algo e isso vem ficando cada vez mais evidente. O modulo MooseX::Declare nos traz algumas features muito interessantes e que simplificam ainda mais a forma como lemos e escrevemos nosso código.
Então deem uma olhada no doc que contem melhores exemplos e explicações, faça seus testes e brinque um pouco com o módulo que é bem interessante.

