Your SlideShare is downloading. ×
0
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Perl Moderno, dia5
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Perl Moderno, dia5

1,099

Published on

Curso de verão para alunos de graduação e pós-graduação da UFRJ

Curso de verão para alunos de graduação e pós-graduação da UFRJ

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,099
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. PerlModerno.Breno G. de Oliveira garu@cpan.orgBruno C. Buss bbuss@cpan.org Perl Moderno
  • 2. Dia #5 Perl Moderno
  • 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
  • 4. (revisitando)Criando Módulos Perl Moderno
  • 5. (revisitando)Criando Módulos Distribuições Perl Moderno
  • 6. Module::Starter Perl Moderno
  • 7. > module-starter --module=Meu::Modulo --author=“Meu Nome” --email=“meu@email” Perl Moderno
  • 8. Outros facilitadores para criação e atualização de módulos incluem Dist::Zilla e ShipIt Perl Moderno
  • 9. Documentação (POD) Perl Moderno
  • 10. =pod…=cut 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 onú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
  • 13. Testes Perl Moderno
  • 14. use Test::More;use_ok( Meu::Modulo );my $var = minha_funcao();ok( $var == 42, valor padrão );is( $var, 42, valor padrão );is_deeply( $var, { chave => [42,-1] }, valor padrão) or diag explain $var;done_testing; Perl Moderno
  • 15. Coloque seus testes no diretóriot de sua distribuição, e utilize ocomando prove para executá-los > prove ­lvr t/ Perl Moderno
  • 16. Perl::Critic Perl Moderno
  • 17. > perlcritic meuprog.pl Perl Moderno
  • 18. http://perlcritic.com Perl Moderno
  • 19. Perl::Tidy Perl Moderno
  • 20. > perltidy meuprog.pl Perl Moderno
  • 21. Orientaçãoa Objetos Perl Moderno
  • 22. package Meu::Modulo;use 5.12.0;use warnings;sub minha_funcao { …}1; Perl Moderno
  • 23. package Meu::Modulo;use 5.12.0;use warnings;use Moose;sub minha_funcao { …}1; Perl Moderno
  • 24. package Meu::Modulo;use 5.12.0;use Moose;sub minha_funcao { …}1; Perl Moderno
  • 25. package Meu::Modulo;use 5.12.0;use Moose;sub minha_funcao { my $self = shift; …}1; Perl Moderno
  • 26. package Meu::Modulo;use 5.12.0;use Moose;sub meu_metodo { my $self = shift; …}1; Perl Moderno
  • 27. package Meu::Modulo;use 5.12.0;use Moose;sub meu_metodo { my ($self, @args) = @_; …}1; Perl Moderno
  • 28. package Meu::Modulo;use 5.12.0;use Moose;has x, is => rw;sub meu_metodo { my ($self, @args) = @_; …}1; Perl Moderno
  • 29. package Meu::Modulo;use 5.12.0;use Moose;has x, is => rw, isa => Int;sub meu_metodo { my ($self, @args) = @_; …}1; 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
  • 35. package Meu::Modulo::Filho;use 5.12.0;use Moose;extends Meu::Modulo;before meu_metodo => sub { say vou chamar o método!;};1; Perl Moderno
  • 36. Meta-Object Protocol (MOP) 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; # 42say $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, criadoa partir de lições de CLOS, Smalltalk, Perl 6, e muitos outros. Veja mais em Moose::Manual Perl Moderno
  • 43. Bancos de Dados Perl Moderno
  • 44. use DBI;my $dbh = DBI->connect( dbi:mysql:database=BANCO;host=IP;port=PORTA, meu_usuario, minha_senha, { RaiseError => 1, AutoCommit => 1 });my $sth = $dbh->prepare( SELECT * FROM pessoas WHERE nome=?);$sth->execute( $nome );while( my $linha = $sth->fetchrow_hashref ) { say $linha->{idade};}$dbh->disconnect; Perl Moderno
  • 45. use DBI;my $dbh = DBI->connect( dbi:Pg:database=BANCO;host=IP;port=PORTA, meu_usuario, minha_senha, { RaiseError => 1, AutoCommit => 1 });my $sth = $dbh->prepare( SELECT * FROM pessoas WHERE nome=?);$sth->execute( $nome );while( my $linha = $sth->fetchrow_hashref ) { say $linha->{idade};}$dbh->disconnect; Perl Moderno
  • 46. use DBI;my $dbh = DBI->connect( dbi:Oracle:database=BANCO;host=IP;port=PORTA, meu_usuario, minha_senha, { RaiseError => 1, AutoCommit => 1 });my $sth = $dbh->prepare( SELECT * FROM pessoas WHERE nome=?);$sth->execute( $nome );while( my $linha = $sth->fetchrow_hashref ) { say $linha->{idade};}$dbh->disconnect; Perl Moderno
  • 47. Veja DBIx::Class, Rose::DB::Object e Fey::ORM para modelosobjeto-relacionais, e SQL::Translator para conversão e SQL entre bancos Perl Moderno
  • 48. Web Crawling 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. UtilizeHTML::TreeBuilder, Mojo::DOM ou equivalentes Perl Moderno
  • 52. Web Perl Moderno
  • 53. use Mojolicious::Lite;get / => sub { my $self = shift; $self->render_text( Alo, Mundo! );};app->start; Perl Moderno
  • 54. > perl meuprog.pl daemon 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émuma 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
  • 58. Obrigado!Dúvidas? Perl Moderno

×