• Save
Perl Moderno, dia3
Upcoming SlideShare
Loading in...5
×
 

Perl Moderno, dia3

on

  • 1,392 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
1,392
Views on SlideShare
1,358
Embed Views
34

Actions

Likes
2
Downloads
0
Comments
0

3 Embeds 34

http://www.dcc.ufrj.br 29
http://dcc.ufrj.br 4
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, dia3 Perl Moderno, dia3 Presentation Transcript

  • PerlModerno.Breno G. de Oliveira garu@cpan.orgBruno C. Buss bbuss@cpan.org Perl Moderno
  • Dia #3 Perl Moderno
  • Revisão . Operadores quote-like . Executando programas externos . Arrays e funções para listas . Contextos . Hashes e funções para hashes Perl Moderno
  • Referências Perl Moderno
  • crie referências colocandouma barra invertida “” na frente da variável Perl Moderno
  • my @numeros = ( um, dois, três );my $num_ref = @numeros; Perl Moderno
  • my @lista = ( 1, 7, @outra_lista, 5 ); ( cópia dos elementos de @outra_lista ) Perl Moderno
  • my @lista = ( 1, 7, @outra_lista, 5 ); ( apenas 1 elemento em @lista! ) Perl Moderno
  • my %stones = ( voz => Jagger, guitarra => Richards, baixo => Wyman, bateria => Watts,);my $banda_ref = %stones; Perl Moderno
  • você pode pular o “passo intermediário” e criarreferências anônimas, usando [] para arrays e {} para hashes Perl Moderno
  • my @numeros = ( um, dois, três );my $num_ref = @numeros; Perl Moderno
  • my $num_ref = [ um, dois, três ]; Perl Moderno
  • my %stones = ( voz => Jagger, guitarra => Richards, baixo => Wyman, bateria => Watts,);my $banda_ref = %stones; Perl Moderno
  • my $banda_ref ={ voz => Jagger, guitarra => Richards, baixo => Wyman, bateria => Watts,}; Perl Moderno
  • desfaça referências colocando-aentre chaves onde você normalmente escreveria o nome da variável Perl Moderno
  • @numeros Perl Moderno
  • @{ } Perl Moderno
  • @{ $ref } Perl Moderno
  • $numeros[1] Perl Moderno
  • ${ }[1] Perl Moderno
  • ${ $ref }[1] Perl Moderno
  • my @numeros = ( um, dois, três );my $num_ref = @numeros;my @outro = @{ $num_ref }; Perl Moderno
  • my @numeros = ( um, dois, três );my $num_ref = @numeros;my @outro = @{ $num_ref };my $valor = ${ $num_ref }[2]; Perl Moderno
  • na hora de desfazer referências, as chaves são opcionais. Use quando for mais legível Perl Moderno
  • @{ $ref } Perl Moderno
  • @$ref Perl Moderno
  • @$ref √ Perl Moderno
  • ${ $ref }[1] Perl Moderno
  • $$ref [1] Perl Moderno
  • ?$$ref [1] [2] Perl Moderno
  • ?${ $ref [1] }[2] Perl Moderno
  • ${ $ref }[1] [2] Perl Moderno
  • $$ref [1] [2] Perl Moderno
  • utilize $ref->em vez de ${ $ref } ou $$ref para acessar elementos Perl Moderno
  • ${ $ref }[1] Perl Moderno
  • $ref->[1] Perl Moderno
  • my $extenso = { um => 1, dois => 2,};say $extenso->{dois}; Perl Moderno
  • my $extenso = { um => 1, dois => 2,};foreach my $chave ( keys %{$extenso} ) { say $extenso->{$chave};} Perl Moderno
  • my $extenso = { um => 1, dois => 2,};foreach my $chave ( keys %$extenso ) { say $extenso->{$chave};} Perl Moderno
  • my $var = { um => 1, dois => 2,};say ref $var;HASH Perl Moderno
  • my $var = [ 1, 2 ];say ref $var;ARRAY Perl Moderno
  • Estruturas Complexas Perl Moderno
  • my @matriz = ( [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ],);say $matriz[1]->[2]; Perl Moderno
  • my @matriz = ( [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ],);say $matriz[1]->[2];6 Perl Moderno
  • my @matriz = ( [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ],);say $matriz[1][2];6 Perl Moderno
  • entre chaves/colchetes, a “seta” é opcional Perl Moderno
  • my @matriz = ( [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ],);say $matriz[1][2];6 Perl Moderno
  • my $matriz = [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ],];say $matriz->[1][2];6 Perl Moderno
  • my $complicado = [ { um => [ 1, 2, [ 3, bla, { resposta => 42 }, ], { 4 => 5, 6 => [ 7, 8, 9 ], }, ], }, 5,]; Perl Moderno
  • 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
  • inspecione estruturas complexascom módulos como Data::Dumper, Data::Dump::Streamer ou Data::Printer Perl Moderno
  • Funções Perl Moderno
  • sub minha_funcao { …} Perl Moderno
  • sub minha_funcao { …}minha_funcao(); Perl Moderno
  • sub minha_funcao { return 42;}my $valor = minha_funcao(); Perl Moderno
  • sub minha_funcao { return (1, 2, 3);}my @valores = minha_funcao(); Perl Moderno
  • Passando parâmetros Perl Moderno
  • minha_funcao( foo ); Perl Moderno
  • minha_funcao( 1, 2, 3 ); Perl Moderno
  • @_ Perl Moderno
  • sub minha_funcao { my @parametros = @_;}minha_funcao(42); Perl Moderno
  • sub minha_funcao { my ($valor1, $valor2) = @_;}minha_funcao(42); Perl Moderno
  • sub minha_funcao { my $valor = $_[0];}minha_funcao(42); Perl Moderno
  • sub minha_funcao { my $valor = shift @_;}minha_funcao(42); Perl Moderno
  • sub minha_funcao { my $valor = shift;}minha_funcao(42); Perl Moderno
  • sub minha_funcao { die “argumentos insuficientes” unless @_ > 2;}minha_funcao(); Perl Moderno
  • sub minha_funcao { die “argumentos insuficientes” unless @_ > 2;}minha_funcao();argumentos insuficientes at prog.pl line 2. Perl Moderno
  • 1 sub minha_funcao {2 die “argumentos insuficientes”3 unless @_ > 2;4 }56 minha_funcao(); argumentos insuficientes at prog.pl line 2. Perl Moderno
  • 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
  • use croak() para gerar exceções do ponto de vista de quem chamou, ou confess() para um stack-trace completo Perl Moderno
  • Carp::Always Perl Moderno
  • sub minha_funcao { my (@lista1, @lista2) = @_;}minha_funcao( @letras, @nums ); Perl Moderno
  • sub minha_funcao { my (@lista1, @lista2) = @_;}minha_funcao( @letras, @nums ); Perl Moderno
  • sub minha_funcao { my ($lista1, $lista2) = @_;}minha_funcao( @letras, @nums ); Perl Moderno
  • Referências &funções anônimas Perl Moderno
  • sub minha_funcao { …} Perl Moderno
  • sub minha_funcao { …}my $sub_ref = &minha_funcao(); Perl Moderno
  • sub minha_funcao { …}my $sub_ref = &minha_funcao();$sub_ref->( 10_000 ) Perl Moderno
  • my $sub_ref = sub { …}$sub_ref->( 10_000 ) Perl Moderno
  • Closurese variáveis de estado Perl Moderno
  • sub contador { my $i = shift; return sub { return $i++; };}my $contador = contador(13);say $contador->(); # 13say $contador->(); # 14 Perl Moderno
  • sub contador { state $i = shift; return $i++;}say contador(13); # 13say contador(13); # 14 Perl Moderno
  • Argumentos recebidos pelo programa Perl Moderno
  • @ARGV Perl Moderno
  • my $arquivo = $ARGV[0] or exibe_ajuda() and exit; Perl Moderno
  • Getopt::Long Perl Moderno
  • use Getopt::Long;my %opcoes = ();GetOptions( %opcoes,    l|length=i,    v|verbose,);say bla if $opcoes{v}; Perl Moderno
  • use Getopt::Long;my $opcoes = {};GetOptions( $opcoes,    l|length=i,    v|verbose,);say bla if $opcoes->{v}; Perl Moderno
  • CPAN Perl Moderno
  • CPAN = Perl Moderno
  • I CPAN 90% do seu programa já está pronto! Perl Moderno
  • “cpan” Perl Moderno
  • “cpan” PAUSE Perl Moderno
  • “cpan” PAUSE mirrors Perl Moderno
  • “cpan” PAUSE mirrors busca online Perl Moderno
  • “cpan” PAUSE mirrors busca onlineCPAN Ratings Perl Moderno
  • “cpan” PAUSE mirrorsCPAN RT busca online CPAN Ratings Perl Moderno
  • “cpan”CPAN Testers PAUSE mirrorsCPAN RT busca online CPAN Ratings Perl Moderno
  • “cpan”CPAN Testers PAUSE mirrorsCPAN RT busca online CPAN Ratings Perl Moderno
  • use o módulo local::lib parainstalar módulos como usuário (conta sem privilégios) Perl Moderno
  • > curl -L http://cpanmin.us | perl – local::lib (…)> echo eval $(perl ­I$HOME/perl5/lib/perl5        ­Mlocal::lib) >>~/.bashrc Perl Moderno
  • Instalação de Módulos manual cpan cpanp cpanm Perl Moderno
  • Upload de Módulos pause.cpan.org Perl Moderno
  • Busca Online search.cpan.org Perl Moderno
  • Busca Online search.metacpan.org Perl Moderno
  • Busca Online grep.cpan.me Perl Moderno
  • Avaliação & Feedback cpanratings.perl.org Perl Moderno
  • Avaliação & Feedback annocpan.org Perl Moderno
  • Bug & Request Tracking rt.cpan.org Perl Moderno
  • Quality Assurance cpantesters.org Perl Moderno
  • 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
  • Escolhendo Bons Módulos Task::Kensho Perl Moderno