Perl Moderno, dia3

  • 1,134 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,134
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
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 #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