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,112

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,112
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

×