Sem querendo fazer flamewar, mas este código é maior e menos MVC do que o Catalyst.<div><br></div><div>Brinks a parte,</div><div>o modulo Catalyst::Lite é uma brincadeira!<br><br><div class="gmail_quote">2011/7/11 Nelson Ferraz <span dir="ltr"><<a href="mailto:nferraz@gmail.com">nferraz@gmail.com</a>></span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">   Lucas> para validar:<br>
   Lucas> sub end :Private {<br>
   Lucas>     my ( $self, $c ) = @_;<br>
   Lucas>     if(!$c->user_exists){<br>
   Lucas>         $c->res->redirect('/login');<br>
   Lucas>     }<br>
   Lucas> }<br>
</div>   Lucas><br>
<div class="im">   Lucas> para pegar valores do Args:<br>
   Lucas> sub alterar :LocalRegex('[0-9]') {<br>
   Lucas>     my ( $self, $c, @get) = @_;<br>
   Lucas>     $c->stash->{valor} =  $get[0];<br>
   Lucas>     $c->forward('View::TT');<br>
   Lucas> }<br>
<br>
</div>Sem querer iniciar uma flamewar, mas este é apenas mais um exemplo<br>
onde o Catalyst complica demais algo que deveria ser simples.<br>
<br>
Veja como isso pode ser feito no Mojolicious:<br>
<br>
#!/usr/bin/perl<br>
<br>
use Mojolicious::Lite; # implicitly use strict and warnings<br>
<br>
# 1: verificar uma variável de sessão<br>
<br>
get '/' => sub {<br>
    my $self = shift;<br>
<br>
    my $username = $self->session('username');<br>
<br>
    self->redirect_to('/login') if !$username;<br>
<br>
    $self->render( text => "Hello, $username" );<br>
};<br>
<br>
# 2: definir uma variável de sessão<br>
<br>
get '/login' => sub {<br>
    my $self = shift;<br>
<br>
    my $username = $self->param('username');<br>
    my $password = $self->param('password');<br>
<br>
    if ($username eq 'foo' and $password eq 'bar') {<br>
        $self->session( username => $username );<br>
        $self->redirect_to('/');<br>
    }<br>
<br>
    $self->render( text => "Please use:<br>
<a href="http://localhost:3000/login?username=xxx;password=yyy" target="_blank">http://localhost:3000/login?username=xxx;password=yyy</a>" );<br>
};<br>
<br>
# 3: remover uma variável de sessão<br>
<br>
get '/logout' => sub {<br>
    my $self = shift;<br>
<br>
    my $username = $self->session('username');<br>
    $self->session( username => undef ); # poderia ter usado "expire"<br>
<br>
    $self->render( text => "Bye bye, $username" );<br>
};<br>
<br>
app->start();<br>
<br>
__END__<br>
<br>
Mais informações:<br>
<br>
<a href="http://search.cpan.org/~sri/Mojolicious-1.64/lib/Mojolicious/Lite.pm#Sessions" target="_blank">http://search.cpan.org/~sri/Mojolicious-1.64/lib/Mojolicious/Lite.pm#Sessions</a><br>
<br>
[]s<br>
<font color="#888888"><br>
Nelson<br>
</font><br>
PS: Até onde eu sei, o Eden estava trabalhando em um projeto que<br>
traria esse tipo de simplicidade para o Catalyst. Em que pé está esse<br>
projeto, Eden?<br>
<div><div></div><div class="h5">=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Renato Santos<br><a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a><br>
</div>