Perl Moderno, dia1

3,043 views
2,942 views

Published on

Curso de verão para alunos de graduação e pós-graduação da UFRJ

Published in: Technology

Perl Moderno, dia1

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

×