• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Perl Moderno, dia1
 

Perl Moderno, dia1

on

  • 2,764 views

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

Statistics

Views

Total Views
2,764
Views on SlideShare
2,714
Embed Views
50

Actions

Likes
4
Downloads
0
Comments
0

4 Embeds 50

http://www.dcc.ufrj.br 43
http://dcc.ufrj.br 5
http://static.slidesharecdn.com 1
http://webcache.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Perl Moderno, dia1 Perl Moderno, dia1 Presentation Transcript

    • Perl Moderno. Breno G. de Oliveira Bruno C. Buss garu@cpan.org [email_address]
    • Dia #1
    • Perl.
    • PERL
    • Perl.
    • Perl?
    • Multi-plataforma
    • Multi-paradigma
    • TIMTOWTDI
    • BCINABT
    • "Programe sempre como se a pessoa que vai manter seu código fosse um psicopata violento que soubesse onde você mora". – Damian Conway
    • Ambiente de Desenvolvimento
    • Padre, The Perl IDE padre.perlide.org
    • vim emacs notepad kephra textmate eclipse komodo gedit kate ...
    • Documentação
    • perldoc.perl.org
    • > perldoc -f função say eval sprintf split lc reverse open pack keys fork sort map time ref
    • > perldoc Módulo local::lib WWW::Mechanize Log::Log4perl Chart::Clicker Moose Try::Tiny Carp Digest::MD5 Net::DNS Catalyst DateTime
    • > perldoc manual perltoc perlipc perlvar perldiag perldsc perlsyn perlop perlsub perlrun perlintro perlreftut perldoc
    • 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
    • Cabeçalho
    • use strict; use warnings;
    • use 5.12.3; use warnings;
    • #!/usr/bin/perl use 5.12.3; use warnings; use diagnostics;
    • “ Alô, Mundo.”
    • say “Alô, Mundo.”
    • say “Alô, Mundo.” ;
    • #!/usr/bin/perl use 5.12.3; use warnings; say “Alô, Mundo.”;
    • > perl alomundo.pl
    • > perl alomundo.pl Alô, Mundo.
    • > chmod +x alomundo.pl > ./alomundo.pl Alô, Mundo.
    • Variáveis
    • my $frase = 'Alô, Mundo.' ; say $frase ;
    • my $frase = 'Alô, Mundo.' ; say $frase ; print “ $frase n ” ;
    • aspas simples interpretam o conteúdo literalmente.
    • my $numero = 42 ; print “A resposta é $numeron” ; print 'E essa é $numeron' ;
    • my $numero = 42 ; print “A resposta é $numeron” ; print 'E essa é $numeron' ; A resposta é 42 E essa é $numeron
    • my $valor; $valor = 42; $valor = -6; $valor = 3.1415926; $valor = 'a'; $valor = 'abc'; $valor = undef;
    • dê nomes significativos para suas variáveis.
    • Manipulando Números
    • my $i = 1 ; $i = $i + 1 ;
    • my $i = 1 ; $i ++;
    • my $i = 1 ; $i = $i + 41 ;
    • my $i = 1 ; $i += 41 ;
    • + - * / ** %
    • sqrt atan2 cos sin abs int hex oct log exp rand srand
    • int rand
    • my $aleatorio = int rand 2 ;
    • # número de 1 a 10 my $aleatorio = int ( rand 10 ) + 1;
    • utilize parênteses sempre que ajudar a legibilidade de suas expressões
    • use bignum; use bigrat;
    • use POSIX; use Math::Trig;
    • use PDL; (Perl Data Language)
    • responda rápido! Que número é esse?
    • responda rápido! Que número é esse? 10000000000
    • responda rápido! Que tal agora? 10_000_000_000
    • separe números pela casa dos milhares com “_”
    • Manipulando Strings
    • my $dna = 'ATGCT' ; $dna = $dna . 'TCG' ;
    • my $dna = 'ATGCT' ; $dna .= 'TCG' ;
    • say “valor: $dna” ; say 'valor:' . $dna ;
    • say “********************n” . “** MEU PROG **n” . “** ======= **n” . “** bem-vindo ao **n” . “** programa! **n” . “********************n” ;
    • say << 'EOHEADER' ; ******************** ** MEU PROG ** ** ======= ** ** bem-vindo ao ** ** programa! ** ******************** EOHEADER
    • 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
    • my $grito = 'A' x 100;
    • chomp substr reverse length index rindex lc uc ucfirst (...)
    • Lendo do Teclado
    • Lendo do Teclado STDIN
    • my $frase = <STDIN>; say $frase ;
    • say “Qual o seu nome?” ; my $nome = <STDIN>; say “Olá, $nome ! Tudo bem?” ;
    • > perl pergunta.pl Qual o seu nome? Breno
    • > perl pergunta.pl Qual o seu nome? Breno Olá, Breno ! Tudo bem?
    • > perl pergunta.pl Qual o seu nome? Breno Olá, Breno ! Tudo bem? n
    • say “Qual o seu nome?” ; my $nome = <STDIN>; say “Olá, $nome ! Tudo bem?” ;
    • say “Qual o seu nome?” ; my $nome = <STDIN>; chomp $nome ; say “Olá, $nome ! Tudo bem?” ;
    • say “Qual o seu nome?” ; chomp ( my $nome = <STDIN> ); say “Olá, $nome ! Tudo bem?” ;
    • > perl pergunta.pl Qual o seu nome? Breno Olá, Breno! Tudo bem?
    • Condicionais
    • if ( $idade < 18 ) { say 'Dimenor!' ; }
    • say 'Dimenor!' if $idade < 18;
    • say 'Dimenor!' if $idade < 18;
    • say 'Dimenor!' unless $idade >= 18;
    • if ( $idade < 18 ) { say 'Dimenor!' ; }
    • if ( $idade < 18 ) { say 'Dimenor!' ; } else { say 'Coroa!' ; }
    • if ( $idade < 18 ) { say 'Dimenor!' ; } elsif ( $idade > 60 ) { say 'Coroa!' ; } else { say 'Indeciso!' ; }
    • Comparando Números Strings == != > >= < <= eq ne gt ge lt le
    • Comparando Números Strings == != > >= < <= eq ne
    • ~~
    • ~~ (smart matching)
    • say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2
    • say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √
    • say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √ √
    • say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √ √ √
    • say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √ √ √ √
    • say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √ √ √ √ √
    • say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √ √ √ √ √ √
    • say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √ √ √ √ √ √ √
    • say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √ √ √ √ √ √ √ √
    • say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √ √ √ √ √ √ √ √ X
    • say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √ √ √ √ √ √ √ √ X √
    • say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √ √ √ √ √ √ √ √ X √ X
    • say “W00t!” if $num ~~ 100 ; 100 100.00 100,00 “ 100” “ 100.00000” +100 “ +100” 0x64 -100 “ 100 ” “ R$ 100” 1e2 √ √ √ √ √ √ √ √ X √ X √
    • Operações Lógicas && || ! and or not xor
    • Laços
    • my $i = 1; while ( $i < 18 ) { say “exibindo elemento $i” ; $i ++; }
    • foreach my $i ( 1, 2, 3 ) { say “exibindo elemento $i” ; }
    • for my $i ( 1, 2, 3 ) { say “exibindo elemento $i” ; }
    • for ( my $i = 1; $i <= 3; $i ++ ) { say “exibindo elemento $i” ; }
    • while ( my $linha = <STDIN> ) { chomp $linha ; next unless $linha eq 'senha' ; say 'bem vindo!' ; last ; }
    • $_
    • $_ (variável implícita)
    • $_ (variável de contexto)
    • $_ (variável padrão)
    • $_ (“dólar anderláine”)
    • $_
    • foreach my $i ( 1, 2, 3 ) { say $i ; }
    • foreach ( 1, 2, 3 ) { say ; }
    • say foreach ( 1, 2, 3 );
    • while ( my $linha = <STDIN> ) { chomp $linha ; next unless $linha eq 'senha' ; say 'bem vindo!' ; last ; }
    • while ( <STDIN> ) { chomp ; next unless $_ eq 'senha' ; say 'bem vindo!' ; last ; }
    • while ( <> ) { chomp ; next unless $_ eq 'senha' ; say 'bem vindo!' ; last ; }
    • say 'Alô, Mundo' ;
    • say STDOUT 'Alô, Mundo' ;
    • say STDERR 'Alô, Mundo' ;
    • Manipulando Arquivos
    • open my $fh , '>' , 'arquivo.txt' ;
    • open my $fh , '>' , 'arquivo.txt' ;
    • open my $fh , '>' , 'arquivo.txt' ;
    • open my $fh , '>' , 'arquivo.txt' or die “erro: $!” ;
    • use autodie; open my $fh , '>' , 'arquivo.txt' ;
    • say STDERR 'Alô, Mundo' ;
    • say $fh 'Alô, Mundo' ;
    • use autodie; open my $fh , '>' , 'arquivo.txt' ; say $fh 'Alô, Mundo' ; close $fh ;
    • open my $fh , '<' , 'arquivo.txt' ;
    • open my $fh , '<' , 'arquivo.txt' ;
    • use autodie; open my $fh , '<' , 'arquivo.txt' ; while ( my $linha = < $fh > ) { chomp $linha ; say “linha $. contém: $linha” ; } close $fh ;
    • Dojo Rio! http://dojorio.wordpress.com !
    • Rio Perl Mongers! http://rio.pm.org !
    • YAPC::Brasil 2011 http://yapcbrasil.org.br !
    • http://onyxneon.com/books/modern_perl/
    • Exercícios!