O documento resume os principais tópicos sobre Perl moderno apresentados em 5 dias de treinamento. Os tópicos incluem expressões regulares, tratamento de exceções, módulos, orientação a objetos, bancos de dados e desenvolvimento web.
3. Revisão
. Expressões Regulares
. Capture::Tiny pra capturar saída
. eval e Try::Tiny para exceções
. time, localtime e DateTime
. Path::Class, Config::Any e Log4perl
. Criando módulos (e exportando)
. Usando módulos locais (e importando)
Perl Moderno
11. =pod
=head1 SINOPSE
use Meu::Modulo;
minha_funcao( 42 );
=head1 FUNÇÕES
=head2 minha_funcao( NUMERO )
A função C<minha_funcao()> recebe B<SEMPRE>
Um número, e retorna I<verdadeiro> se o
número for maior que zero.
=cut
Perl Moderno
12. Para facilitar a navegação pelo código,
mova seu POD para o fim do arquivo,
abaixo do demarcador __END__
Perl Moderno
30. package Meu::Modulo;
use 5.12.0;
use Moose;
has 'x', is => 'rw', isa => 'Int', default => 0;
sub meu_metodo {
my ($self, @args) = @_;
…
}
1;
Perl Moderno
31. package Meu::Modulo;
use 5.12.0;
use Moose;
has 'x' => (
is => 'rw',
isa => 'Int',
default => 0,
);
sub meu_metodo {
my ($self, @args) = @_;
…
}
1;
Perl Moderno
32. use Meu::Modulo;
my $objeto = Meu::Modulo->new;
say $objeto->x; # 0
$objeto->meu_metodo();
$objeto->x( 42 );
say $objeto->x; # 42
Perl Moderno
33. use Meu::Modulo;
my $objeto = Meu::Modulo->new( x => 8 );
say $objeto->x; # 8
$objeto->meu_metodo();
$objeto->x( 42 );
say $objeto->x; # 42
Perl Moderno
34. package Meu::Modulo;
use 5.12.0;
use Moose;
has 'x', is => 'rw', isa => 'Int', default => 0;
sub meu_metodo {
my ($self, @args) = @_;
…
}
1;
Perl Moderno
37. use Meu::Modulo;
my $objeto = Meu::Modulo->new;
$objeto->meta->add_method(
'resposta' => sub { say 42 }
);
$objeto->meta->remove_method('meu_metodo');
say $objeto->resposta; # 42
say $objeto->meu_metodo; # erro!
Perl Moderno
38. package Meu::Modulo;
use 5.12.0;
use Moose;
has 'x', is => 'rw', isa => 'Int', default => 0;
sub meu_metodo {
my ($self, @args) = @_;
…
}
1;
Perl Moderno
39. package Meu::Modulo;
use 5.12.0;
use Moose;
has 'x', is => 'rw', isa => 'Int', default => 0;
sub meu_metodo {
my ($self, @args) = @_;
…
}
Meu::Modulo->meta->make_immutable;
1;
Perl Moderno
40. package Meu::Modulo;
use 5.12.0;
use Moose;
has 'x', is => 'rw', isa => 'Int', default => 0;
sub meu_metodo {
my ($self, @args) = @_;
…
}
Meu::Modulo->meta->make_immutable;
Perl Moderno
41. package Meu::Modulo;
use 5.12.0;
use Moose;
has 'x', is => 'rw', isa => 'Int', default => 0;
sub meu_metodo {
my ($self, @args) = @_;
…
}
__PACKAGE__->meta->make_immutable;
Perl Moderno
42. Moose é um Sistema de Objetos
completo, estável e robusto, criado
a partir de lições de CLOS, Smalltalk,
Perl 6, e muitos outros. Veja
mais em Moose::Manual
Perl Moderno
49. use WWW::Mechanize;
my $mech = WWW::Mechanize->new;
$mech->get('http://exemplo.com');
$mech->follow_link(text => 'Clique Aqui!');
$mech->submit_form( with_fields => {
nome => 'Raul Seixas',
idade => 10_000,
apelido => 'Maluco Beleza',
});
say $mech->content;
Perl Moderno
50. use Mojo::Client;
my $url = 'http://www.google.com/search?q=mojolicious';
Mojo::Client->new->get($url)
->res->dom->find('h3.r a')
->each( sub { say shift->all_text } );
Perl Moderno
51. Não faça parsing de HTML com
expressões regulares. Utilize
HTML::TreeBuilder, Mojo::DOM
ou equivalentes
Perl Moderno
55. use Mojolicious::Lite;
get '/:usuario' => sub {
my $self = shift;
my $nome = $self->param('usuario');
$self->render_text( “Alo, $nome!” );
};
app->start;
Perl Moderno
56. use Mojolicious::Lite;
get '/:usuario' => sub {
my $self = shift;
my $nome = $self->param('usuario');
$self->stash( nome => $nome );
} => 'index';
app->start;
__DATA__
@@ index.html.ep
<html><body>
Alo, <%= $nome %>
</body></html>
Perl Moderno
57. Mojolicious é simples de usar e com
muitos recursos. Dancer é também
uma alternativa popular. Mas o framework
mais estável e robusto em Perl hoje
chama-se Catalyst, usado em sites
complexos e de altíssimo tráfego.
Perl Moderno