Perl Moderno, dia3

1,490 views
1,385 views

Published on

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,490
On SlideShare
0
From Embeds
0
Number of Embeds
36
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Perl Moderno, dia3

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

×