Your SlideShare is downloading. ×
0
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
Perl Moderno, dia1
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, dia1

2,662

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
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,662
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
5
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. Perl Moderno. Breno G. de Oliveira Bruno C. Buss garu@cpan.org [email_address]
  • 2. Dia #1
  • 3. Perl.
  • 4. PERL
  • 5. Perl.
  • 6. Perl?
  • 7. Multi-plataforma
  • 8. Multi-paradigma
  • 9. TIMTOWTDI
  • 10. BCINABT
  • 11. "Programe sempre como se a pessoa que vai manter seu código fosse um psicopata violento que soubesse onde você mora". – Damian Conway
  • 12. Ambiente de Desenvolvimento
  • 13. Padre, The Perl IDE padre.perlide.org
  • 14. vim emacs notepad kephra textmate eclipse komodo gedit kate ...
  • 15. Documentação
  • 16. perldoc.perl.org
  • 17. > perldoc -f função say eval sprintf split lc reverse open pack keys fork sort map time ref
  • 18. > perldoc Módulo local::lib WWW::Mechanize Log::Log4perl Chart::Clicker Moose Try::Tiny Carp Digest::MD5 Net::DNS Catalyst DateTime
  • 19. > perldoc manual perltoc perlipc perlvar perldiag perldsc perlsyn perlop perlsub perlrun perlintro perlreftut perldoc
  • 20. Linha do Tempo 1995 Perl 5 Java PHP Ruby 2000 5.6.0 2002 5.8.0 2007 5.10.0 2008 5.8.9 2009 5.10.1 2010 5.12.0 5.12.1 5.12.2 5.12.3 2011
  • 21. Cabeçalho
  • 22. use strict; use warnings;
  • 23. use 5.12.3; use warnings;
  • 24. #!/usr/bin/perl use 5.12.3; use warnings; use diagnostics;
  • 25. “ Alô, Mundo.”
  • 26. say “Alô, Mundo.”
  • 27. say “Alô, Mundo.” ;
  • 28. #!/usr/bin/perl use 5.12.3; use warnings; say “Alô, Mundo.”;
  • 29. > perl alomundo.pl
  • 30. > perl alomundo.pl Alô, Mundo.
  • 31. > chmod +x alomundo.pl > ./alomundo.pl Alô, Mundo.
  • 32. Variáveis
  • 33. my $frase = 'Alô, Mundo.' ; say $frase ;
  • 34. my $frase = 'Alô, Mundo.' ; say $frase ; print “ $frase n ” ;
  • 35. aspas simples interpretam o conteúdo literalmente.
  • 36. my $numero = 42 ; print “A resposta é $numeron” ; print 'E essa é $numeron' ;
  • 37. my $numero = 42 ; print “A resposta é $numeron” ; print 'E essa é $numeron' ; A resposta é 42 E essa é $numeron
  • 38. my $valor; $valor = 42; $valor = -6; $valor = 3.1415926; $valor = 'a'; $valor = 'abc'; $valor = undef;
  • 39. dê nomes significativos para suas variáveis.
  • 40. Manipulando Números
  • 41. my $i = 1 ; $i = $i + 1 ;
  • 42. my $i = 1 ; $i ++;
  • 43. my $i = 1 ; $i = $i + 41 ;
  • 44. my $i = 1 ; $i += 41 ;
  • 45. + - * / ** %
  • 46. sqrt atan2 cos sin abs int hex oct log exp rand srand
  • 47. int rand
  • 48. my $aleatorio = int rand 2 ;
  • 49. # número de 1 a 10 my $aleatorio = int ( rand 10 ) + 1;
  • 50. utilize parênteses sempre que ajudar a legibilidade de suas expressões
  • 51. use bignum; use bigrat;
  • 52. use POSIX; use Math::Trig;
  • 53. use PDL; (Perl Data Language)
  • 54. responda rápido! Que número é esse?
  • 55. responda rápido! Que número é esse? 10000000000
  • 56. responda rápido! Que tal agora? 10_000_000_000
  • 57. separe números pela casa dos milhares com “_”
  • 58. Manipulando Strings
  • 59. my $dna = 'ATGCT' ; $dna = $dna . 'TCG' ;
  • 60. my $dna = 'ATGCT' ; $dna .= 'TCG' ;
  • 61. say “valor: $dna” ; say 'valor:' . $dna ;
  • 62. say “********************n” . “** MEU PROG **n” . “** ======= **n” . “** bem-vindo ao **n” . “** programa! **n” . “********************n” ;
  • 63. say << 'EOHEADER' ; ******************** ** MEU PROG ** ** ======= ** ** bem-vindo ao ** ** programa! ** ******************** EOHEADER
  • 64. say << “EOHEADER” ; Se usarmos aspas duplas para definir um “heredoc”, ele vai interpretar caracteres como n e até interpolar variáveis como $essa aqui. EOHEADER
  • 65. my $grito = 'A' x 100;
  • 66. chomp substr reverse length index rindex lc uc ucfirst (...)
  • 67. Lendo do Teclado
  • 68. Lendo do Teclado STDIN
  • 69. my $frase = <STDIN>; say $frase ;
  • 70. say “Qual o seu nome?” ; my $nome = <STDIN>; say “Olá, $nome ! Tudo bem?” ;
  • 71. > perl pergunta.pl Qual o seu nome? Breno
  • 72. > perl pergunta.pl Qual o seu nome? Breno Olá, Breno ! Tudo bem?
  • 73. > perl pergunta.pl Qual o seu nome? Breno Olá, Breno ! Tudo bem? n
  • 74. say “Qual o seu nome?” ; my $nome = <STDIN>; say “Olá, $nome ! Tudo bem?” ;
  • 75. say “Qual o seu nome?” ; my $nome = <STDIN>; chomp $nome ; say “Olá, $nome ! Tudo bem?” ;
  • 76. say “Qual o seu nome?” ; chomp ( my $nome = <STDIN> ); say “Olá, $nome ! Tudo bem?” ;
  • 77. > perl pergunta.pl Qual o seu nome? Breno Olá, Breno! Tudo bem?
  • 78. Condicionais
  • 79. if ( $idade < 18 ) { say 'Dimenor!' ; }
  • 80. say 'Dimenor!' if $idade < 18;
  • 81. say 'Dimenor!' if $idade < 18;
  • 82. say 'Dimenor!' unless $idade >= 18;
  • 83. if ( $idade < 18 ) { say 'Dimenor!' ; }
  • 84. if ( $idade < 18 ) { say 'Dimenor!' ; } else { say 'Coroa!' ; }
  • 85. if ( $idade < 18 ) { say 'Dimenor!' ; } elsif ( $idade > 60 ) { say 'Coroa!' ; } else { say 'Indeciso!' ; }
  • 86. Comparando Números Strings == != > >= < <= eq ne gt ge lt le
  • 87. Comparando Números Strings == != > >= < <= eq ne
  • 88. ~~
  • 89. ~~ (smart matching)
  • 90. say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2
  • 91. say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √
  • 92. say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √ √
  • 93. say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √ √ √
  • 94. say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √ √ √ √
  • 95. say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √ √ √ √ √
  • 96. say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √ √ √ √ √ √
  • 97. say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √ √ √ √ √ √ √
  • 98. say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √ √ √ √ √ √ √ √
  • 99. say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √ √ √ √ √ √ √ √ X
  • 100. say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √ √ √ √ √ √ √ √ X √
  • 101. say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √ √ √ √ √ √ √ √ X √ X
  • 102. say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √ √ √ √ √ √ √ √ X √ X √
  • 103. Operações Lógicas && || ! and or not xor
  • 104. Laços
  • 105. my $i = 1; while ( $i < 18 ) { say “exibindo elemento $i” ; $i ++; }
  • 106. foreach my $i ( 1, 2, 3 ) { say “exibindo elemento $i” ; }
  • 107. for my $i ( 1, 2, 3 ) { say “exibindo elemento $i” ; }
  • 108. for ( my $i = 1; $i <= 3; $i ++ ) { say “exibindo elemento $i” ; }
  • 109. while ( my $linha = <STDIN> ) { chomp $linha ; next unless $linha eq 'senha' ; say 'bem vindo!' ; last ; }
  • 110. $_
  • 111. $_ (variável implícita)
  • 112. $_ (variável de contexto)
  • 113. $_ (variável padrão)
  • 114. $_ (“dólar anderláine”)
  • 115. $_
  • 116. foreach my $i ( 1, 2, 3 ) { say $i ; }
  • 117. foreach ( 1, 2, 3 ) { say ; }
  • 118. say foreach ( 1, 2, 3 );
  • 119. while ( my $linha = <STDIN> ) { chomp $linha ; next unless $linha eq 'senha' ; say 'bem vindo!' ; last ; }
  • 120. while ( <STDIN> ) { chomp ; next unless $_ eq 'senha' ; say 'bem vindo!' ; last ; }
  • 121. while ( <> ) { chomp ; next unless $_ eq 'senha' ; say 'bem vindo!' ; last ; }
  • 122. say 'Alô, Mundo' ;
  • 123. say STDOUT 'Alô, Mundo' ;
  • 124. say STDERR 'Alô, Mundo' ;
  • 125. Manipulando Arquivos
  • 126. open my $fh , '>' , 'arquivo.txt' ;
  • 127. open my $fh , '>' , 'arquivo.txt' ;
  • 128. open my $fh , '>' , 'arquivo.txt' ;
  • 129. open my $fh , '>' , 'arquivo.txt' or die “erro: $!” ;
  • 130. use autodie; open my $fh , '>' , 'arquivo.txt' ;
  • 131. say STDERR 'Alô, Mundo' ;
  • 132. say $fh 'Alô, Mundo' ;
  • 133. use autodie; open my $fh , '>' , 'arquivo.txt' ; say $fh 'Alô, Mundo' ; close $fh ;
  • 134. open my $fh , '<' , 'arquivo.txt' ;
  • 135. open my $fh , '<' , 'arquivo.txt' ;
  • 136. use autodie; open my $fh , '<' , 'arquivo.txt' ; while ( my $linha = < $fh > ) { chomp $linha ; say “linha $. contém: $linha” ; } close $fh ;
  • 137. Dojo Rio! http://dojorio.wordpress.com !
  • 138. Rio Perl Mongers! http://rio.pm.org !
  • 139. YAPC::Brasil 2011 http://yapcbrasil.org.br !
  • 140. http://onyxneon.com/books/modern_perl/
  • 141. Exercícios!

×