• Save
Perl Moderno, dia3
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Perl Moderno, dia3

  • 1,455 views
Uploaded 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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,455
On Slideshare
1,421
From Embeds
34
Number of Embeds
3

Actions

Shares
Downloads
0
Comments
0
Likes
2

Embeds 34

http://www.dcc.ufrj.br 29
http://dcc.ufrj.br 4
http://webcache.googleusercontent.com 1

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 #3 Perl Moderno
  • 3. Revisão . Operadores quote-like . Executando programas externos . Arrays e funções para listas . Contextos . Hashes e funções para hashes Perl Moderno
  • 4. Referências Perl Moderno
  • 5. crie referências colocandouma barra invertida “” na frente da variável Perl Moderno
  • 6. my @numeros = ( um, dois, três );my $num_ref = @numeros; Perl Moderno
  • 7. my @lista = ( 1, 7, @outra_lista, 5 ); ( cópia dos elementos de @outra_lista ) Perl Moderno
  • 8. my @lista = ( 1, 7, @outra_lista, 5 ); ( apenas 1 elemento em @lista! ) Perl Moderno
  • 9. my %stones = ( voz => Jagger, guitarra => Richards, baixo => Wyman, bateria => Watts,);my $banda_ref = %stones; Perl Moderno
  • 10. você pode pular o “passo intermediário” e criarreferências anônimas, usando [] para arrays e {} para hashes Perl Moderno
  • 11. my @numeros = ( um, dois, três );my $num_ref = @numeros; Perl Moderno
  • 12. my $num_ref = [ um, dois, três ]; Perl Moderno
  • 13. my %stones = ( voz => Jagger, guitarra => Richards, baixo => Wyman, bateria => Watts,);my $banda_ref = %stones; Perl Moderno
  • 14. my $banda_ref ={ voz => Jagger, guitarra => Richards, baixo => Wyman, bateria => Watts,}; Perl Moderno
  • 15. desfaça referências colocando-aentre chaves onde você normalmente escreveria o nome da variável Perl Moderno
  • 16. @numeros Perl Moderno
  • 17. @{ } Perl Moderno
  • 18. @{ $ref } Perl Moderno
  • 19. $numeros[1] Perl Moderno
  • 20. ${ }[1] Perl Moderno
  • 21. ${ $ref }[1] Perl Moderno
  • 22. my @numeros = ( um, dois, três );my $num_ref = @numeros;my @outro = @{ $num_ref }; Perl Moderno
  • 23. my @numeros = ( um, dois, três );my $num_ref = @numeros;my @outro = @{ $num_ref };my $valor = ${ $num_ref }[2]; Perl Moderno
  • 24. na hora de desfazer referências, as chaves são opcionais. Use quando for mais legível Perl Moderno
  • 25. @{ $ref } Perl Moderno
  • 26. @$ref Perl Moderno
  • 27. @$ref √ Perl Moderno
  • 28. ${ $ref }[1] Perl Moderno
  • 29. $$ref [1] Perl Moderno
  • 30. ?$$ref [1] [2] Perl Moderno
  • 31. ?${ $ref [1] }[2] Perl Moderno
  • 32. ${ $ref }[1] [2] Perl Moderno
  • 33. $$ref [1] [2] Perl Moderno
  • 34. utilize $ref->em vez de ${ $ref } ou $$ref para acessar elementos Perl Moderno
  • 35. ${ $ref }[1] Perl Moderno
  • 36. $ref->[1] Perl Moderno
  • 37. my $extenso = { um => 1, dois => 2,};say $extenso->{dois}; Perl Moderno
  • 38. my $extenso = { um => 1, dois => 2,};foreach my $chave ( keys %{$extenso} ) { say $extenso->{$chave};} Perl Moderno
  • 39. my $extenso = { um => 1, dois => 2,};foreach my $chave ( keys %$extenso ) { say $extenso->{$chave};} Perl Moderno
  • 40. my $var = { um => 1, dois => 2,};say ref $var;HASH Perl Moderno
  • 41. my $var = [ 1, 2 ];say ref $var;ARRAY Perl Moderno
  • 42. Estruturas Complexas Perl Moderno
  • 43. my @matriz = ( [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ],);say $matriz[1]->[2]; Perl Moderno
  • 44. my @matriz = ( [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ],);say $matriz[1]->[2];6 Perl Moderno
  • 45. my @matriz = ( [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ],);say $matriz[1][2];6 Perl Moderno
  • 46. entre chaves/colchetes, a “seta” é opcional Perl Moderno
  • 47. my @matriz = ( [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ],);say $matriz[1][2];6 Perl Moderno
  • 48. my $matriz = [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ],];say $matriz->[1][2];6 Perl Moderno
  • 49. my $complicado = [ { um => [ 1, 2, [ 3, bla, { resposta => 42 }, ], { 4 => 5, 6 => [ 7, 8, 9 ], }, ], }, 5,]; Perl Moderno
  • 50. my $complicado = [ { um => [ 1, 2, [ 3, bla, { resposta => 42 }, ], { 4 => 5, 6 => [ 7, 8, 9 ], }, ], }, 5,];say $complicado->[0]{um}[2][2]{resposta};42 Perl Moderno
  • 51. inspecione estruturas complexascom módulos como Data::Dumper, Data::Dump::Streamer ou Data::Printer Perl Moderno
  • 52. Funções Perl Moderno
  • 53. sub minha_funcao { …} Perl Moderno
  • 54. sub minha_funcao { …}minha_funcao(); Perl Moderno
  • 55. sub minha_funcao { return 42;}my $valor = minha_funcao(); Perl Moderno
  • 56. sub minha_funcao { return (1, 2, 3);}my @valores = minha_funcao(); Perl Moderno
  • 57. Passando parâmetros Perl Moderno
  • 58. minha_funcao( foo ); Perl Moderno
  • 59. minha_funcao( 1, 2, 3 ); Perl Moderno
  • 60. @_ Perl Moderno
  • 61. sub minha_funcao { my @parametros = @_;}minha_funcao(42); Perl Moderno
  • 62. sub minha_funcao { my ($valor1, $valor2) = @_;}minha_funcao(42); Perl Moderno
  • 63. sub minha_funcao { my $valor = $_[0];}minha_funcao(42); Perl Moderno
  • 64. sub minha_funcao { my $valor = shift @_;}minha_funcao(42); Perl Moderno
  • 65. sub minha_funcao { my $valor = shift;}minha_funcao(42); Perl Moderno
  • 66. sub minha_funcao { die “argumentos insuficientes” unless @_ > 2;}minha_funcao(); Perl Moderno
  • 67. sub minha_funcao { die “argumentos insuficientes” unless @_ > 2;}minha_funcao();argumentos insuficientes at prog.pl line 2. Perl Moderno
  • 68. 1 sub minha_funcao {2 die “argumentos insuficientes”3 unless @_ > 2;4 }56 minha_funcao(); argumentos insuficientes at prog.pl line 2. Perl Moderno
  • 69. 1 use Carp;23 sub minha_funcao {4 croak “argumentos insuficientes”5 unless @_ > 2;6 }78 minha_funcao(); argumentos insuficientes at prog.pl line 4 main::minha_funcao() called at prog.pl line 8 Perl Moderno
  • 70. use croak() para gerar exceções do ponto de vista de quem chamou, ou confess() para um stack-trace completo Perl Moderno
  • 71. Carp::Always Perl Moderno
  • 72. sub minha_funcao { my (@lista1, @lista2) = @_;}minha_funcao( @letras, @nums ); Perl Moderno
  • 73. sub minha_funcao { my (@lista1, @lista2) = @_;}minha_funcao( @letras, @nums ); Perl Moderno
  • 74. sub minha_funcao { my ($lista1, $lista2) = @_;}minha_funcao( @letras, @nums ); Perl Moderno
  • 75. Referências &funções anônimas Perl Moderno
  • 76. sub minha_funcao { …} Perl Moderno
  • 77. sub minha_funcao { …}my $sub_ref = &minha_funcao(); Perl Moderno
  • 78. sub minha_funcao { …}my $sub_ref = &minha_funcao();$sub_ref->( 10_000 ) Perl Moderno
  • 79. my $sub_ref = sub { …}$sub_ref->( 10_000 ) Perl Moderno
  • 80. Closurese variáveis de estado Perl Moderno
  • 81. sub contador { my $i = shift; return sub { return $i++; };}my $contador = contador(13);say $contador->(); # 13say $contador->(); # 14 Perl Moderno
  • 82. sub contador { state $i = shift; return $i++;}say contador(13); # 13say contador(13); # 14 Perl Moderno
  • 83. Argumentos recebidos pelo programa Perl Moderno
  • 84. @ARGV Perl Moderno
  • 85. my $arquivo = $ARGV[0] or exibe_ajuda() and exit; Perl Moderno
  • 86. Getopt::Long Perl Moderno
  • 87. use Getopt::Long;my %opcoes = ();GetOptions( %opcoes,    l|length=i,    v|verbose,);say bla if $opcoes{v}; Perl Moderno
  • 88. use Getopt::Long;my $opcoes = {};GetOptions( $opcoes,    l|length=i,    v|verbose,);say bla if $opcoes->{v}; Perl Moderno
  • 89. CPAN Perl Moderno
  • 90. CPAN = Perl Moderno
  • 91. I CPAN 90% do seu programa já está pronto! Perl Moderno
  • 92. “cpan” Perl Moderno
  • 93. “cpan” PAUSE Perl Moderno
  • 94. “cpan” PAUSE mirrors Perl Moderno
  • 95. “cpan” PAUSE mirrors busca online Perl Moderno
  • 96. “cpan” PAUSE mirrors busca onlineCPAN Ratings Perl Moderno
  • 97. “cpan” PAUSE mirrorsCPAN RT busca online CPAN Ratings Perl Moderno
  • 98. “cpan”CPAN Testers PAUSE mirrorsCPAN RT busca online CPAN Ratings Perl Moderno
  • 99. “cpan”CPAN Testers PAUSE mirrorsCPAN RT busca online CPAN Ratings Perl Moderno
  • 100. use o módulo local::lib parainstalar módulos como usuário (conta sem privilégios) Perl Moderno
  • 101. > curl -L http://cpanmin.us | perl – local::lib (…)> echo eval $(perl ­I$HOME/perl5/lib/perl5        ­Mlocal::lib) >>~/.bashrc Perl Moderno
  • 102. Instalação de Módulos manual cpan cpanp cpanm Perl Moderno
  • 103. Upload de Módulos pause.cpan.org Perl Moderno
  • 104. Busca Online search.cpan.org Perl Moderno
  • 105. Busca Online search.metacpan.org Perl Moderno
  • 106. Busca Online grep.cpan.me Perl Moderno
  • 107. Avaliação & Feedback cpanratings.perl.org Perl Moderno
  • 108. Avaliação & Feedback annocpan.org Perl Moderno
  • 109. Bug & Request Tracking rt.cpan.org Perl Moderno
  • 110. Quality Assurance cpantesters.org Perl Moderno
  • 111. Escolhendo Bons Módulos . Boa documentação? . Testes relevantes ok? . Fila de Bugs/Requests ok? . Sólido ou abandonado? . Avaliação de terceiros? . Faz o que você precisa? Perl Moderno
  • 112. Escolhendo Bons Módulos Task::Kensho Perl Moderno