SlideShare una empresa de Scribd logo
1 de 29
The
 Modern
  Perl
Toolchain
Cómo conseguir Perl
Hay gente que nunca ha instalado Perl
  – Viene preinstalado en casi todos los sabores
    de *N?X
El mundo *N?X tradicional


                    Paquetes
    Paquetes

                     CPAN
    Compilado
     a mano         A mano
Perl paquetes + Módulos paquetes
          PROS                     CONS
• Buena estabilidad      • Perls antiguos
• Instalación fácil (e   • Módulos antiguos
  integrada con el SO)   • Alguna distribución
                           gamberra
Perl paquetes + Modulos CPAN
          PROS                 CONS
• Bleeding edge       • Perls antiguos
• Instalación fácil   • Alguna distribución
                        gamberra
                      • Peligro de cargarte
                        módulos del sistema
Perl paquetes + CPAN a mano
          PROS                 CONS
• Bleeding edge   •   Perls antiguos
                  •   Alguna distribución
                      gamberra
                  •   Peligro de cargarte
                      módulos del sistema
                  •   A mano!!!
Modern

 Paquetes       Paquetes

                local::lib
 Perlbrew
                 CPAN
Compilado a
  mano          A mano
Perlbrew + local::lib
         PROS               CONS
• Bleeding edge     • Entornos no
• Personalizar        reproducibles
  compilación
• Entorno aislado
Windows
• ActivePerl           • Strawberry Perl
  – PPM -> Paquetes      – CPAN
    precompilados de
    modulos de CPAN
  – No CPAN
Perlbrew

 perlbrew.pl

 admin-free perl
   installation
management tool
Perlbrew - instalación
monger@onion:~$ wget --no-check-certificate
  -O - http://install.perlbrew.pl | bash

monger@onion:~$ source
  ~/perl5/perlbrew/etc/bashrc
Perlbrew - uso
monger@onion:~$ perlbrew available
  perl-5.15.8
  perl-5.14.2
  perl-5.12.4
  perl-5.10.1
  perl-5.8.9
  perl-5.6.2
  perl5.005_04
  perl5.004_05
  perl5.003_07
Perlbrew – instalar un perl
monger@onion:~$ perlbrew install perl-5.14.2
monger@onion:~$ perlbrew available
  perl-5.15.8
i perl-5.14.2
  perl-5.12.4
  perl-5.10.1
  perl-5.8.9
  perl-5.6.2
  perl5.005_04
  perl5.004_05
  perl5.003_07
Perlbrew – instalar un perl
monger@onion:~$   perlbrew list
 perl-5.14.2
monger@onion:~$   perlbrew switch perl-5.14.2
monger@onion:~$   perlbrew list
* perl-5.14.2
monger@onion:~$   perlbrew use perl-5.14.2
Perlbrew – instalar un perl


  #!/usr/bin/perl
#!/usr/bin/env perl
Perlbrew – local::lib

monger@onion:~$ perlbrew lib perl-5.14.2@curso
  lib 'perl-5.14.2@curso' is created.
monger@onion:~$ perlbrew list
* perl-5.14.2
  perl-5.14.2@curso
monger@onion:~$ perlbrew use perl-5.14.2@curso
monger@onion:~$ perlbrew list
  perl-5.14.2
* perl-5.14.2@curso
Dist::Zilla
monger@onion:~$   cpanm Dist::Zilla
  …
monger@onion:~$   dzill setup
monger@onion:~$   dzill new App::Curso
monger@onion:~$   dzill clean


            Y ya se puede empezar!
Dist::Zilla
Opciones útiles:

monger@onion:~$ dzill run bash

monger@onion:~$ dzill test

monger@onion:~$ dzil authordeps|cpanm
Cómo conseguir módulos
Ya tenemos Perl instalado. Y ahora, ¿cómo
conseguimos los módulos que necesitamos?
Cómo conseguir módulos


monger@onion:~$ perlbrew install-cpanm
monger@onion:~$ cpanm Date::Holidays::CA_ES
Herramientas de la
    comunidad
CPAN: Comprehensive Perl Archive
          Network
            cpan.org
         search.cpan.org
          metacpan.org
CPAN: Comprehensive Perl Archive
          Network
     104.551 módulos de Perl
                en
     24.391 distribuciones
            escritos por
         9.569 autores
           y replicado en
        268 servidores
CPAN Testers
cpantesters.org
Bugs
rt.cpan.org
¿Cómo contribuir?
Publicando módulos (http://pause.perl.org)
       Participando en perlmonks.org
   Contribuyendo a módulos existentes
      Reportando (y arreglando) bugs
               Realizando tests
 Participando en la lista de mongers local
                      …
Módulos interesantes - Core
             CGI
        Data::Dumper
            File::*
           FindBin
        Getopt::Long
            Net::*
Módulos interesantes
              Template::Toolkit
                Data::Printer
                Net::Server
                  Catalyst
                Mojolicious
                 DBIx::Class
                   Plack
                   LWP
              WWW::Mechanize

Hemos dicho que hay casi 25.000 distribuciones?
Ejercicios
1. Instalar un perl 5.14.2 con perlbrew
  1. Hacer un script que diga “Hello World!” y el
     intérprete de perl que lo ha ejecutado
2. Instalar Mojolicious en un local::lib llamado
   mojo
3. Instalar Catalyst, DBI, DBIx::Class y
   DBD::Sqlite en un local::lib llamado catalyst
4. Crear un nuevo modulo con Dist::Zilla
  1. Instalar el modulo con cpanm

Más contenido relacionado

La actualidad más candente

Ccna security-ch2-securing-network-devices
Ccna security-ch2-securing-network-devicesCcna security-ch2-securing-network-devices
Ccna security-ch2-securing-network-devices
Javier H
 
Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015
Gustavo Andres Brey
 

La actualidad más candente (20)

Guía de pgpool Paso a Paso
Guía de pgpool Paso a PasoGuía de pgpool Paso a Paso
Guía de pgpool Paso a Paso
 
Docker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 HuancayoDocker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 Huancayo
 
Implementación Docker Swarm en Amazon Web Services usando Auto Scaling Groups...
Implementación Docker Swarm en Amazon Web Services usando Auto Scaling Groups...Implementación Docker Swarm en Amazon Web Services usando Auto Scaling Groups...
Implementación Docker Swarm en Amazon Web Services usando Auto Scaling Groups...
 
1. configuracion del servidor dhcp en linux
1. configuracion del servidor dhcp en linux1. configuracion del servidor dhcp en linux
1. configuracion del servidor dhcp en linux
 
Pg pool cluster postgresql
Pg pool cluster postgresqlPg pool cluster postgresql
Pg pool cluster postgresql
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a Docker
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
 
Docker Compose para el Docker Lima Meetup Mayo
Docker Compose para el Docker Lima Meetup MayoDocker Compose para el Docker Lima Meetup Mayo
Docker Compose para el Docker Lima Meetup Mayo
 
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptxDocker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
 
Kubernetes - #dockerconlima
Kubernetes  - #dockerconlimaKubernetes  - #dockerconlima
Kubernetes - #dockerconlima
 
Introducción a Kubernetes
Introducción a KubernetesIntroducción a Kubernetes
Introducción a Kubernetes
 
Jenkins Pipeline - Seville JAM
Jenkins Pipeline - Seville JAMJenkins Pipeline - Seville JAM
Jenkins Pipeline - Seville JAM
 
Ccna security-ch2-securing-network-devices
Ccna security-ch2-securing-network-devicesCcna security-ch2-securing-network-devices
Ccna security-ch2-securing-network-devices
 
Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015
 
Docker y PostgreSQL
Docker y PostgreSQLDocker y PostgreSQL
Docker y PostgreSQL
 
Kubernetes - Container Orchestration, Deployment and Scaling
Kubernetes - Container Orchestration, Deployment and ScalingKubernetes - Container Orchestration, Deployment and Scaling
Kubernetes - Container Orchestration, Deployment and Scaling
 
Introducción a Kotlin para desarrolladores Java
Introducción a Kotlin para desarrolladores JavaIntroducción a Kotlin para desarrolladores Java
Introducción a Kotlin para desarrolladores Java
 
Contenedores como Servicio con Docker
Contenedores como Servicio con DockerContenedores como Servicio con Docker
Contenedores como Servicio con Docker
 
Meetup de kubernetes, conceptos básicos.
Meetup  de kubernetes, conceptos básicos.Meetup  de kubernetes, conceptos básicos.
Meetup de kubernetes, conceptos básicos.
 

Similar a The modern perl toolchain

Scripting para Pentesters v1.0
Scripting para Pentesters v1.0Scripting para Pentesters v1.0
Scripting para Pentesters v1.0
wcuestas
 

Similar a The modern perl toolchain (20)

La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARLa Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
 
Cómo crear una distribución Linux
Cómo crear una distribución LinuxCómo crear una distribución Linux
Cómo crear una distribución Linux
 
Docker en el entorno de desarrollo
Docker en el entorno de desarrolloDocker en el entorno de desarrollo
Docker en el entorno de desarrollo
 
Clusters Beowulf
Clusters BeowulfClusters Beowulf
Clusters Beowulf
 
Open Build Service
Open Build ServiceOpen Build Service
Open Build Service
 
Composer
ComposerComposer
Composer
 
Scripting para Pentesters v1.0
Scripting para Pentesters v1.0Scripting para Pentesters v1.0
Scripting para Pentesters v1.0
 
Dbdeployer
DbdeployerDbdeployer
Dbdeployer
 
MythTV Mediacenter on an IGEPv2
MythTV Mediacenter on an IGEPv2 MythTV Mediacenter on an IGEPv2
MythTV Mediacenter on an IGEPv2
 
LXC, Docker, LXD &snaps
LXC, Docker, LXD &snapsLXC, Docker, LXD &snaps
LXC, Docker, LXD &snaps
 
Madrid devops empaquetamientodeb_i
Madrid devops empaquetamientodeb_iMadrid devops empaquetamientodeb_i
Madrid devops empaquetamientodeb_i
 
Taller: Exploración de redes con Nmap
Taller: Exploración de redes con NmapTaller: Exploración de redes con Nmap
Taller: Exploración de redes con Nmap
 
Composer & SemVer
Composer & SemVerComposer & SemVer
Composer & SemVer
 
Desplegando Drupal con Capistrano
Desplegando Drupal con CapistranoDesplegando Drupal con Capistrano
Desplegando Drupal con Capistrano
 
Curso linux clase_2_2012
Curso linux clase_2_2012Curso linux clase_2_2012
Curso linux clase_2_2012
 
Configuracion del servidor vsftpd en linux
Configuracion del servidor vsftpd en linuxConfiguracion del servidor vsftpd en linux
Configuracion del servidor vsftpd en linux
 
Compilacion del Kernel a la Debian
Compilacion del Kernel a la DebianCompilacion del Kernel a la Debian
Compilacion del Kernel a la Debian
 
Gestión Remota de Equipos con Python
Gestión Remota de Equipos con PythonGestión Remota de Equipos con Python
Gestión Remota de Equipos con Python
 
Stacks de HPC #FSL2014
Stacks de HPC #FSL2014Stacks de HPC #FSL2014
Stacks de HPC #FSL2014
 
Interchange CMS - e-commerce
Interchange CMS - e-commerceInterchange CMS - e-commerce
Interchange CMS - e-commerce
 

Más de Jose Luis Martínez

Más de Jose Luis Martínez (17)

Being cloudy with perl
Being cloudy with perlBeing cloudy with perl
Being cloudy with perl
 
Modern Perl toolchain (help building microservices)
Modern Perl toolchain (help building microservices)Modern Perl toolchain (help building microservices)
Modern Perl toolchain (help building microservices)
 
MooseX::Datamodel - Barcelona Perl Workshop Lightning talk
MooseX::Datamodel - Barcelona Perl Workshop Lightning talkMooseX::Datamodel - Barcelona Perl Workshop Lightning talk
MooseX::Datamodel - Barcelona Perl Workshop Lightning talk
 
Paws - Perl AWS SDK Update - November 2015
Paws - Perl AWS SDK Update - November 2015Paws - Perl AWS SDK Update - November 2015
Paws - Perl AWS SDK Update - November 2015
 
Paws - A Perl AWS SDK
Paws - A Perl AWS SDKPaws - A Perl AWS SDK
Paws - A Perl AWS SDK
 
Boosting MySQL (for starters)
Boosting MySQL (for starters)Boosting MySQL (for starters)
Boosting MySQL (for starters)
 
Plenv and carton
Plenv and cartonPlenv and carton
Plenv and carton
 
Building an aws sdk for Perl - Granada Perl Workshop 2014
Building an aws sdk for Perl - Granada Perl Workshop 2014Building an aws sdk for Perl - Granada Perl Workshop 2014
Building an aws sdk for Perl - Granada Perl Workshop 2014
 
Writing plugins for Nagios and Opsview - CAPSiDE Tech Talks
Writing plugins for Nagios and Opsview - CAPSiDE Tech TalksWriting plugins for Nagios and Opsview - CAPSiDE Tech Talks
Writing plugins for Nagios and Opsview - CAPSiDE Tech Talks
 
Escribir plugins para Nagios en Perl
Escribir plugins para Nagios en PerlEscribir plugins para Nagios en Perl
Escribir plugins para Nagios en Perl
 
NRD: Nagios Result Distributor
NRD: Nagios Result DistributorNRD: Nagios Result Distributor
NRD: Nagios Result Distributor
 
Perl and AWS
Perl and AWSPerl and AWS
Perl and AWS
 
Writing nagios plugins in perl
Writing nagios plugins in perlWriting nagios plugins in perl
Writing nagios plugins in perl
 
Ficheros y directorios
Ficheros y directoriosFicheros y directorios
Ficheros y directorios
 
DBIx::Class
DBIx::ClassDBIx::Class
DBIx::Class
 
DBI
DBIDBI
DBI
 
Introducción a las Expresiones Regulares
Introducción a las Expresiones RegularesIntroducción a las Expresiones Regulares
Introducción a las Expresiones Regulares
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (12)

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 

The modern perl toolchain

  • 1. The Modern Perl Toolchain
  • 2. Cómo conseguir Perl Hay gente que nunca ha instalado Perl – Viene preinstalado en casi todos los sabores de *N?X
  • 3. El mundo *N?X tradicional Paquetes Paquetes CPAN Compilado a mano A mano
  • 4. Perl paquetes + Módulos paquetes PROS CONS • Buena estabilidad • Perls antiguos • Instalación fácil (e • Módulos antiguos integrada con el SO) • Alguna distribución gamberra
  • 5. Perl paquetes + Modulos CPAN PROS CONS • Bleeding edge • Perls antiguos • Instalación fácil • Alguna distribución gamberra • Peligro de cargarte módulos del sistema
  • 6. Perl paquetes + CPAN a mano PROS CONS • Bleeding edge • Perls antiguos • Alguna distribución gamberra • Peligro de cargarte módulos del sistema • A mano!!!
  • 7. Modern Paquetes Paquetes local::lib Perlbrew CPAN Compilado a mano A mano
  • 8. Perlbrew + local::lib PROS CONS • Bleeding edge • Entornos no • Personalizar reproducibles compilación • Entorno aislado
  • 9. Windows • ActivePerl • Strawberry Perl – PPM -> Paquetes – CPAN precompilados de modulos de CPAN – No CPAN
  • 10. Perlbrew perlbrew.pl admin-free perl installation management tool
  • 11. Perlbrew - instalación monger@onion:~$ wget --no-check-certificate -O - http://install.perlbrew.pl | bash monger@onion:~$ source ~/perl5/perlbrew/etc/bashrc
  • 12. Perlbrew - uso monger@onion:~$ perlbrew available perl-5.15.8 perl-5.14.2 perl-5.12.4 perl-5.10.1 perl-5.8.9 perl-5.6.2 perl5.005_04 perl5.004_05 perl5.003_07
  • 13. Perlbrew – instalar un perl monger@onion:~$ perlbrew install perl-5.14.2 monger@onion:~$ perlbrew available perl-5.15.8 i perl-5.14.2 perl-5.12.4 perl-5.10.1 perl-5.8.9 perl-5.6.2 perl5.005_04 perl5.004_05 perl5.003_07
  • 14. Perlbrew – instalar un perl monger@onion:~$ perlbrew list perl-5.14.2 monger@onion:~$ perlbrew switch perl-5.14.2 monger@onion:~$ perlbrew list * perl-5.14.2 monger@onion:~$ perlbrew use perl-5.14.2
  • 15. Perlbrew – instalar un perl #!/usr/bin/perl #!/usr/bin/env perl
  • 16. Perlbrew – local::lib monger@onion:~$ perlbrew lib perl-5.14.2@curso lib 'perl-5.14.2@curso' is created. monger@onion:~$ perlbrew list * perl-5.14.2 perl-5.14.2@curso monger@onion:~$ perlbrew use perl-5.14.2@curso monger@onion:~$ perlbrew list perl-5.14.2 * perl-5.14.2@curso
  • 17. Dist::Zilla monger@onion:~$ cpanm Dist::Zilla … monger@onion:~$ dzill setup monger@onion:~$ dzill new App::Curso monger@onion:~$ dzill clean Y ya se puede empezar!
  • 18. Dist::Zilla Opciones útiles: monger@onion:~$ dzill run bash monger@onion:~$ dzill test monger@onion:~$ dzil authordeps|cpanm
  • 19. Cómo conseguir módulos Ya tenemos Perl instalado. Y ahora, ¿cómo conseguimos los módulos que necesitamos?
  • 20. Cómo conseguir módulos monger@onion:~$ perlbrew install-cpanm monger@onion:~$ cpanm Date::Holidays::CA_ES
  • 21. Herramientas de la comunidad
  • 22. CPAN: Comprehensive Perl Archive Network cpan.org search.cpan.org metacpan.org
  • 23. CPAN: Comprehensive Perl Archive Network 104.551 módulos de Perl en 24.391 distribuciones escritos por 9.569 autores y replicado en 268 servidores
  • 26. ¿Cómo contribuir? Publicando módulos (http://pause.perl.org) Participando en perlmonks.org Contribuyendo a módulos existentes Reportando (y arreglando) bugs Realizando tests Participando en la lista de mongers local …
  • 27. Módulos interesantes - Core CGI Data::Dumper File::* FindBin Getopt::Long Net::*
  • 28. Módulos interesantes Template::Toolkit Data::Printer Net::Server Catalyst Mojolicious DBIx::Class Plack LWP WWW::Mechanize Hemos dicho que hay casi 25.000 distribuciones?
  • 29. Ejercicios 1. Instalar un perl 5.14.2 con perlbrew 1. Hacer un script que diga “Hello World!” y el intérprete de perl que lo ha ejecutado 2. Instalar Mojolicious en un local::lib llamado mojo 3. Instalar Catalyst, DBI, DBIx::Class y DBD::Sqlite en un local::lib llamado catalyst 4. Crear un nuevo modulo con Dist::Zilla 1. Instalar el modulo con cpanm