SlideShare uma empresa Scribd logo
1 de 120
Perl
Moderno.
Breno G. de Oliveira   garu@cpan.org
Bruno C. Buss          bbuss@cpan.org




                                        Perl Moderno
Dia #4


         Perl Moderno
Revisão


  . Referências
  . Arrays/hashes anônimos
  . Funções (e funções anônimas)
  . Exceções com stack tracing (Carp)
  . @ARGV e Getopt::Long
  . CPAN <3


                              Perl Moderno
Expressões Regulares



                Perl Moderno
http://xkcd.com/208/
                       Perl Moderno
m//

      Perl Moderno
//

     Perl Moderno
m//

      Perl Moderno
m{}

      Perl Moderno
$var =~ m//

         Perl Moderno
$var !~ m//

         Perl Moderno
if ( $var =~ m/UFRJ/ ) {
     say 'Yay!';
}


                     Perl Moderno
if ( $var =~ /UFRJ/ ) {
     say 'Yay!';
}


                      Perl Moderno
if ( $var !~ /UFRJ/ ) {
     say 'humpf.';
}


                      Perl Moderno
if ( $var !~ m/UFRJ/ ) {
     say 'humpf.';
}


                     Perl Moderno
Modificadores



            Perl Moderno
my $frase = 'aluno da UFRJ';


if ( $frase =~ m/UFRJ/i ) {
     say 'Yay!';
}




                          Perl Moderno
my $frase = 'aluno da ufrj';


if ( $frase =~ m/UFRJ/i ) {
     say 'Yay!';
}




                          Perl Moderno
my $frase = 'aluno da uFRj';


if ( $frase =~ m/UFRJ/i ) {
     say 'Yay!';
}




                          Perl Moderno
my $frase = 'UFRJufrjUFRJ';
my $n = 0;
while ( $frase =~ m/UFRJ/g ) {
    $n++;
}
say “UFRJ aparece $n vezes”;


                         Perl Moderno
my $frase = 'UFRJufrjUFRJ';
my $n = 0;
while ( $frase =~ m/UFRJ/ig ) {
    $n++;
}
say “UFRJ aparece $n vezes”;


                         Perl Moderno
Âncoras



          Perl Moderno
my $frase = 'aluno da UFRJ';


if ( $frase =~ m/UFRJ$/ ) {
     say 'Yay!';
}




                          Perl Moderno
my $frase = 'aluno da UFRJ';


if ( $frase =~ m/^UFRJ/ ) {
     say 'Yay!';
}




                         Perl Moderno
my $frase = 'aluno da UFRJ';


if ( $frase =~ m/^UFRJ$/ ) {
    say 'Yay!';
}




                         Perl Moderno
my $frase = 'aluno da UFRJ';


if ( $frase =~ m/bUFRJb/ ) {
     say 'Yay!';
}




                          Perl Moderno
Classes (conjuntos)
   de caracteres



                Perl Moderno
if ( $linguagem =~ m/[pP]erl/ ) {
    say 'Yay!';
}




                           Perl Moderno
if ( $animal =~ m/[rg]ato/ ) {
     say 'Yay!';
}




                           Perl Moderno
if ( $animal =~ m/[^rg]ato/ ) {
     say 'Yay!';
}




                           Perl Moderno
if ( $valor =~ m/[a-z]/ ) {
     say 'existe uma letra!';
}




                              Perl Moderno
if ( $valor =~ m/[a-zA-Z]/ ) {
     say 'existe uma letra!';
}




                            Perl Moderno
if ( $valor =~ m/[a-z]/i ) {
     say 'existe uma letra!';
}




                               Perl Moderno
if ( $valor =~ m/item[0-9]/ ) {
     say 'item encontrado!';
}




                           Perl Moderno
if ( $valor =~ m/itemd/ ) {
     say 'item encontrado!';
}




                               Perl Moderno
d   dígitos
w   caracteres de palavra
s   espaços
.    qualquer coisa (exceto n)




                       Perl Moderno
D   não dígitos
W   não caracteres de palavra
S   não espaços




                      Perl Moderno
sempre que precisar
casar algum meta caractere,
        escape com 

                      Perl Moderno
my $frase = 'cachorros e gatos';


if ( $frase =~ m/gato|cachorro/ ) {
     say 'animal encontrado!';
}




                                      Perl Moderno
my $frase = 'cachorros e gatos';


if ( $frase =~ m/gato[s]|cachorro[s]/ ) {
     say 'animal no plural encontrado!';
}




                                       Perl Moderno
my $frase = 'cachorros e gatos';


if ( $frase =~ m/(gato|cachorro)[s]/ ) {
     say 'animal no plural encontrado!';
}




                                       Perl Moderno
my $frase = 'cachorros e gatos';


if ( $frase =~ m/(gato|cachorro)s/ ) {
     say 'animal no plural encontrado!';
}




                                         Perl Moderno
my $frase = 'cachorros e gatos';


if ( $frase =~ m/(gato|cachorro)s/ ) {
     say $1;
}




                                         Perl Moderno
my $frase = 'cachorros e gatos';


if ( $frase =~ m/(?:gato|cachorro)s/ ) {
     say $1;
}




                                       Perl Moderno
my $frase = 'cachorros e gatos';


if ( $frase =~ m/(?<bicho>gato|cachorro)s/ ) {
    say $+{bicho};
}




                                      Perl Moderno
exercício

  Faça um programa que leia
  uma frase e diga se a sigla
de alguma UFXX foi encontrada
        (e diga qual)



                        Perl Moderno
Quantificadores




              Perl Moderno
a?       'a', 0 ou 1 vezes
a*       'a', 0 ou mais vezes
a+       'a', 1 ou mais vezes
a{n}     'a', exatamente n vezes
a{n,}    'a', n ou mais vezes
a{n,m}   'a', mínimo n, máximo m

                             Perl Moderno
my $frase = 'o gato no mato';


if ( $frase =~ m/(.*)ato/ ) {
     say $1;
}




                                Perl Moderno
my $frase = 'o gato no mato';


if ( $frase =~ m/(.*)ato/ ) {
     say $1;
}


o gato no m
                                Perl Moderno
quantificadores são “gulosos”
 por padrão. Adicione um '?'
  após o quantificador para
   casar o mínimo possível
                      Perl Moderno
guloso

a?       'a', 0 ou 1 vezes
a*       'a', 0 ou mais vezes
a+       'a', 1 ou mais vezes
a{n}     'a', exatamente n vezes
a{n,}    'a', n ou mais vezes
a{n,m}   'a', mínimo n, máximo m

                             Perl Moderno
não guloso

a??      'a', 0 ou 1 vezes
a*?      'a', 0 ou mais vezes
a+?      'a', 1 ou mais vezes
a{n}?    'a', exatamente n vezes
a{n,}?   'a', n ou mais vezes
a{n,m}? 'a', mínimo n, máximo m

                             Perl Moderno
my $frase = 'o gato no mato';


if ( $frase =~ m/(.*)ato/ ) {
     say $1;
}




                                Perl Moderno
my $frase = 'o gato no mato';


if ( $frase =~ m/(.*?)ato/ ) {
     say $1;
}




                                 Perl Moderno
my $frase = 'o gato no mato';


if ( $frase =~ m/(.*?)ato/ ) {
     say $1;
}


og
                                 Perl Moderno
exercício

Faça um programa que leia uma
frase e, se houver uma hora no
 formato “HH:MM”, diga a hora
encontrada e quantos segundos
         ela representa


                        Perl Moderno
m/^[.+].+(UFww)s*:s*(S.+)$/




                               Perl Moderno
m{
     ^          # início da string
     [.+]       # '.' ou '+'
     .+         # um ou mais caracteres
     (UFww)   # sigla da universidade, em $1
     s*:s*    # ':', com 0 ou + espaços
     (S.+)     # nome do curso, em $2
     $          # fim da string
}x




                                     Perl Moderno
m{
     ^                  # início da string
     [.+]               # '.' ou '+'
     .+                 # um ou mais caracteres
     (?<univ> UFww)   # sigla da universidade
     s*:s*            # ':', com 0 ou + espaços
     (?<curso>S.+)     # nome do curso
     $                  # fim da string
}x




                                          Perl Moderno
m//

      Perl Moderno
s///

       Perl Moderno
s{}{}

        Perl Moderno
$var =~ s/abc/def/;



                Perl Moderno
$var =~ s/abc/def/g;



                Perl Moderno
$var =~ s/^(w+)/'$1'/;




                     Perl Moderno
expressões Regulares são extremamente
    poderosas, com backreferences,
 lookahead/behind, reposicionamento,
 e muito mais. Para mais detalhes, veja
     perlrequick, perlretut e perlre

                               Perl Moderno
exercício

  Modifique o programa das
siglas para ler de um arquivo
 e exibir na tela o conteúdo,
      trocando todas as
   ocorrências por “UFRJ”


                        Perl Moderno
Perl Moderno
use Regex::Common



              Perl Moderno
use Regex::Grammars



               Perl Moderno
(revisitando)


    Executando
programas externos


                    Perl Moderno
use Capture::Tiny;



                Perl Moderno
use Capture::Tiny 'capture';

my ($stdout, $stderr) = capture {
     system './outroprog';
};




                               Perl Moderno
Tratamento de
   exceções



            Perl Moderno
say $dividendo / $divisor;




                    Perl Moderno
eval {
   say $dividendo / $divisor;
};




                        Perl Moderno
eval {
     say $dividendo / $divisor;
};
if ($@) {
     say “erro! $@”;
};


                         Perl Moderno
eval “my $var = 42”;




                 Perl Moderno
não faça eval() de strings
a menos que realmente saiba
     o que está fazendo

                       Perl Moderno
use Try::Tiny;


            Perl Moderno
use Try::Tiny;
try {
     $dividendo / $divisor;
};




                              Perl Moderno
use Try::Tiny;
try {
     $dividendo / $divisor;
} catch {
     say “erro! $_”;
};




                              Perl Moderno
use Try::Tiny;
try {
     $dividendo / $divisor;
} catch {
     say “erro! $_”;
} finally {
     $divisor = 1;
};

                              Perl Moderno
Data e Hora



              Perl Moderno
my $time = time;




                   Perl Moderno
my $time = time;


1297345734


                   Perl Moderno
my $time = localtime;




                        Perl Moderno
my $time = localtime;


Thu Feb 10 11:52:34 2011


                        Perl Moderno
my @time = localtime;




                    Perl Moderno
use DateTime;

my $data = DateTime­>new(
        year  => 2011, 
        month => 2, 
        day   => 7, 
);

my $agora = DateTime­>now;
my $duracao = $agora ­ $data;
say $duracao­>days;

                            Perl Moderno
Arquivos
e Diretórios



               Perl Moderno
use Path::Class;

my $dir     = dir('meu','dir');
my $arquivo = file('dir','arq.txt');

say ”$arquivo”;
say $arquivo­>dir;
my $fh = $arquivo­>open('r') or die $!;

my @linhas = $arquivo­>slurp(chomp => 1);

my $outro_dir = $dir­>parent­>parent;


                                Perl Moderno
use File::HomeDir para encontrar
      o “home” do usuário, e
   File::ShareDir para diretórios
de dados estáticos de sua aplicação
                           Perl Moderno
Arquivos de
Configuração



               Perl Moderno
use Config::Any;

my $config = Config::Any­>load_files(
    { files => ['1.conf', '2.json'] }
);




                              Perl Moderno
Logging



          Perl Moderno
logging “tradicional”




 say  “Aqui.”;




                    Perl Moderno
logging “tradicional”
   debugging




               SURADO
print “FUNCIONA PORRA!!”;
            CEN




                        Perl Moderno
use Log::Log4perl qw(:easy);
Log::Log4perl­>easy_init( $INFO );




  DEBUG “Isso nao é exibido”;

  INFO “Mas isso é o/”;

  ERROR “E isso também!”;



                                Perl Moderno
além do “modo simples”, o
Log::Log4perl possui muitas
 configurações poderosas.

                       Perl Moderno
Criando Módulos


            Perl Moderno
lib/Meu/Modulo.pm




               Perl Moderno
package Meu::Modulo;




                Perl Moderno
package Meu::Modulo;

use 5.12.0;
use warnings;

sub minha_funcao {
  …
}

1;

                       Perl Moderno
package Meu::Modulo;

use 5.12.0;
use warnings;

sub minha_funcao {
  …
}

1;

                       Perl Moderno
usando módulos
 não instalados


             Perl Moderno
use lib 'lib';

use Meu::Modulo;

Meu::Modulo::minha_funcao();




                        Perl Moderno
use FindBin '$Bin';
use lib $Bin . '/lib';

use Meu::Modulo;

Meu::Modulo::minha_funcao();




                         Perl Moderno
Exportando funções




               Perl Moderno
package Meu::Modulo;

use 5.12.0;
use warnings;



sub minha_funcao {
  …
}

1;


                       Perl Moderno
package Meu::Modulo;

use 5.12.0;
use warnings;
use parent 'Exporter';
our @EXPORT = qw( minha_funcao );

sub minha_funcao {
  …
}

1;


                             Perl Moderno
use lib 'lib';

use Meu::Modulo;

Meu::Modulo::minha_funcao();




                        Perl Moderno
use lib 'lib';

use Meu::Modulo;

minha_funcao();




                   Perl Moderno
Evite exportar muitas funções para
o namespace do invocante, a menos
   que esteja definindo uma DSL
    ou saiba o que está fazendo

                           Perl Moderno
package Meu::Modulo;

use 5.12.0;
use warnings;
use parent 'Exporter';
our @EXPORT = qw( minha_funcao );

sub minha_funcao {
  …
}

1;


                             Perl Moderno
package Meu::Modulo;

use 5.12.0;
use warnings;
use parent 'Exporter';
our @EXPORT_OK = qw( minha_funcao );

sub minha_funcao {
  …
}

1;


                             Perl Moderno
use lib 'lib';

use Meu::Modulo;

minha_funcao();




                   Perl Moderno
use lib 'lib';

use Meu::Modulo 'minha_funcao';

minha_funcao();




                        Perl Moderno
Não importe nada colocando ()
depois da declaração do módulo

        use Modulo ();

                          Perl Moderno

Mais conteúdo relacionado

Mais procurados (20)

Aula 01 - Curso PHP e MySQL
Aula 01 - Curso PHP e MySQLAula 01 - Curso PHP e MySQL
Aula 01 - Curso PHP e MySQL
 
Shell script
Shell scriptShell script
Shell script
 
Python Class
Python ClassPython Class
Python Class
 
Introdução ao Shell Script (versão estendida)
Introdução ao Shell Script (versão estendida)Introdução ao Shell Script (versão estendida)
Introdução ao Shell Script (versão estendida)
 
Introdução às Redes Neurais com PHP
Introdução às Redes Neurais com PHPIntrodução às Redes Neurais com PHP
Introdução às Redes Neurais com PHP
 
Orientação a Objetos em PHP
Orientação a Objetos em PHPOrientação a Objetos em PHP
Orientação a Objetos em PHP
 
PHP Básico - Parte 3
PHP Básico - Parte 3PHP Básico - Parte 3
PHP Básico - Parte 3
 
JasperReports
JasperReportsJasperReports
JasperReports
 
Introducao ao Shell Script
Introducao ao Shell ScriptIntroducao ao Shell Script
Introducao ao Shell Script
 
LabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - FunçõesLabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - Funções
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
Palestra python
Palestra pythonPalestra python
Palestra python
 
Al sweigart, cap 3
Al sweigart, cap 3Al sweigart, cap 3
Al sweigart, cap 3
 
Minicurso Shell Script
Minicurso Shell ScriptMinicurso Shell Script
Minicurso Shell Script
 
12 aula - shell script-2015
12   aula - shell script-201512   aula - shell script-2015
12 aula - shell script-2015
 
Arrays PHP - Criação de sites II
Arrays PHP - Criação de sites IIArrays PHP - Criação de sites II
Arrays PHP - Criação de sites II
 
PHP GERAL
PHP GERALPHP GERAL
PHP GERAL
 
Expressões Regulares e Python
Expressões Regulares e PythonExpressões Regulares e Python
Expressões Regulares e Python
 
Slides
SlidesSlides
Slides
 
Aula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites IIAula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites II
 

Semelhante a Perl Moderno, dia4

TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyIntrodução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyDiego Rubin
 
PHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesPHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesAlmir Mendes
 
Introdução PHP + Kohana 3
Introdução PHP + Kohana 3Introdução PHP + Kohana 3
Introdução PHP + Kohana 3Adir Kuhn
 
Introdução ao php
Introdução ao phpIntrodução ao php
Introdução ao phpTiago Davi
 
Strings, Arrays e Manipulação Datas em PHP
Strings, Arrays e Manipulação Datas em PHPStrings, Arrays e Manipulação Datas em PHP
Strings, Arrays e Manipulação Datas em PHPDaniel Arndt Alves
 
10 Boas Práticas de Programação
10 Boas Práticas de Programação10 Boas Práticas de Programação
10 Boas Práticas de ProgramaçãoCarlos Schults
 
Oficina de shell script
Oficina de shell scriptOficina de shell script
Oficina de shell scriptbrunobione
 
Apresentação ruby + rails
Apresentação ruby + railsApresentação ruby + rails
Apresentação ruby + railsMarcelo Bohn
 
Ruby
RubyRuby
Rubybesen
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
PW03 - Programação Web PHP Arrays (Vetores)
PW03 - Programação Web PHP Arrays (Vetores)PW03 - Programação Web PHP Arrays (Vetores)
PW03 - Programação Web PHP Arrays (Vetores)Silvano Oliveira
 
Pesquisa tipos de entrada de dados php
Pesquisa tipos de entrada de dados phpPesquisa tipos de entrada de dados php
Pesquisa tipos de entrada de dados phpWesley Germano Otávio
 

Semelhante a Perl Moderno, dia4 (20)

TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyIntrodução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação Ruby
 
Aula2
Aula2Aula2
Aula2
 
PHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesPHP Day - PHP para iniciantes
PHP Day - PHP para iniciantes
 
Introdução PHP + Kohana 3
Introdução PHP + Kohana 3Introdução PHP + Kohana 3
Introdução PHP + Kohana 3
 
Introdução ao php
Introdução ao phpIntrodução ao php
Introdução ao php
 
Strings, Arrays e Manipulação Datas em PHP
Strings, Arrays e Manipulação Datas em PHPStrings, Arrays e Manipulação Datas em PHP
Strings, Arrays e Manipulação Datas em PHP
 
Variáveis
VariáveisVariáveis
Variáveis
 
10 Boas Práticas de Programação
10 Boas Práticas de Programação10 Boas Práticas de Programação
10 Boas Práticas de Programação
 
Oficina de shell script
Oficina de shell scriptOficina de shell script
Oficina de shell script
 
Apresentação ruby + rails
Apresentação ruby + railsApresentação ruby + rails
Apresentação ruby + rails
 
Ruby
RubyRuby
Ruby
 
Revisao php
Revisao phpRevisao php
Revisao php
 
apostila.pdf
apostila.pdfapostila.pdf
apostila.pdf
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
PW03 - Programação Web PHP Arrays (Vetores)
PW03 - Programação Web PHP Arrays (Vetores)PW03 - Programação Web PHP Arrays (Vetores)
PW03 - Programação Web PHP Arrays (Vetores)
 
Php
PhpPhp
Php
 
Fpar aula5
Fpar aula5Fpar aula5
Fpar aula5
 
Pesquisa tipos de entrada de dados php
Pesquisa tipos de entrada de dados phpPesquisa tipos de entrada de dados php
Pesquisa tipos de entrada de dados php
 
Aula 2
Aula 2Aula 2
Aula 2
 

Mais de garux

Introdução ao Perl 6
Introdução ao Perl 6Introdução ao Perl 6
Introdução ao Perl 6garux
 
Descobrindo a linguagem Perl
Descobrindo a linguagem PerlDescobrindo a linguagem Perl
Descobrindo a linguagem Perlgarux
 
Communities - Perl edition (RioJS)
Communities - Perl edition (RioJS)Communities - Perl edition (RioJS)
Communities - Perl edition (RioJS)garux
 
Seja um Perl Core Hacker - é (muito) mais fácil do que você pensa
Seja um Perl Core Hacker - é (muito) mais fácil do que você pensaSeja um Perl Core Hacker - é (muito) mais fácil do que você pensa
Seja um Perl Core Hacker - é (muito) mais fácil do que você pensagarux
 
Game Development with SDL and Perl
Game Development with SDL and PerlGame Development with SDL and Perl
Game Development with SDL and Perlgarux
 
Orientação a Objetos Elegante e Eficiente: Brevíssima Introdução ao Moose
Orientação a Objetos Elegante e Eficiente: Brevíssima Introdução ao MooseOrientação a Objetos Elegante e Eficiente: Brevíssima Introdução ao Moose
Orientação a Objetos Elegante e Eficiente: Brevíssima Introdução ao Moosegarux
 
Perl Quiz 2009 (YAPC::BR)
Perl Quiz 2009 (YAPC::BR)Perl Quiz 2009 (YAPC::BR)
Perl Quiz 2009 (YAPC::BR)garux
 
Jogos em Perl
Jogos em PerlJogos em Perl
Jogos em Perlgarux
 
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perlLogging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perlgarux
 
Novidades no Perl 5.10
Novidades no Perl 5.10Novidades no Perl 5.10
Novidades no Perl 5.10garux
 
Desenvolvimento Rápido de Programas Linha de Comando
Desenvolvimento Rápido de Programas Linha de ComandoDesenvolvimento Rápido de Programas Linha de Comando
Desenvolvimento Rápido de Programas Linha de Comandogarux
 

Mais de garux (11)

Introdução ao Perl 6
Introdução ao Perl 6Introdução ao Perl 6
Introdução ao Perl 6
 
Descobrindo a linguagem Perl
Descobrindo a linguagem PerlDescobrindo a linguagem Perl
Descobrindo a linguagem Perl
 
Communities - Perl edition (RioJS)
Communities - Perl edition (RioJS)Communities - Perl edition (RioJS)
Communities - Perl edition (RioJS)
 
Seja um Perl Core Hacker - é (muito) mais fácil do que você pensa
Seja um Perl Core Hacker - é (muito) mais fácil do que você pensaSeja um Perl Core Hacker - é (muito) mais fácil do que você pensa
Seja um Perl Core Hacker - é (muito) mais fácil do que você pensa
 
Game Development with SDL and Perl
Game Development with SDL and PerlGame Development with SDL and Perl
Game Development with SDL and Perl
 
Orientação a Objetos Elegante e Eficiente: Brevíssima Introdução ao Moose
Orientação a Objetos Elegante e Eficiente: Brevíssima Introdução ao MooseOrientação a Objetos Elegante e Eficiente: Brevíssima Introdução ao Moose
Orientação a Objetos Elegante e Eficiente: Brevíssima Introdução ao Moose
 
Perl Quiz 2009 (YAPC::BR)
Perl Quiz 2009 (YAPC::BR)Perl Quiz 2009 (YAPC::BR)
Perl Quiz 2009 (YAPC::BR)
 
Jogos em Perl
Jogos em PerlJogos em Perl
Jogos em Perl
 
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perlLogging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
 
Novidades no Perl 5.10
Novidades no Perl 5.10Novidades no Perl 5.10
Novidades no Perl 5.10
 
Desenvolvimento Rápido de Programas Linha de Comando
Desenvolvimento Rápido de Programas Linha de ComandoDesenvolvimento Rápido de Programas Linha de Comando
Desenvolvimento Rápido de Programas Linha de Comando
 

Perl Moderno, dia4