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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Perl Moderno, dia3

1,155
views

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