Perl et le CPAN

Sébastien Aperghis-Tramoni, sebastien@aperghis.net

Mini-bio

  • ingénieur système et développeur

  • utilisateur de Perl depuis 15 ans

  • contributeur Perl et CPAN (~40 modules)

  • participant à de nombreuses conférences en France et en Europe

  • auteur de plusieurs articles parus dans GNU/Linux Magazine France

  • co-auteur du livre Perl moderne

Perl

  • Practical Extraction and Report Language

  • langage interprété et dynamique

  • libre : GNU GPL et Artistic License

  • créé en 1987 par Larry Wall

Larry Wall

  • Caractéristiques :

    • lunettes carrées

    • moustache

    • chemise hawaïenne

Historique

  • Perl 1.000 - 1987

  • Perl 2.000 - 1988

  • Perl 3.000 - 1989

  • Perl 4.000 - 1991

  • Perl 4.036 - 1993

Historique

  • Perl 5.000 - 1994

  • Perl 5.001 - 1995

  • Perl 5.002 - 1996

  • Perl 5.003 - 1996

  • Perl 5.004 - 1997

  • Perl 5.005 - 1998

Historique

  • Perl 5.6 - 2000

  • Perl 5.8 - 2002

  • ...

  • Perl 5.10 - 2007

  • Perl 5.12 - 2010

  • Perl 5.14 - 2011

Caractéristiques

  • à l'origine, langage de glue

  • intermédiaire entre le shell, awk, sed d'un côté et C de l'autre

  • ajouts de langages fonctionnels comme Lisp

  • maintenant, langage dynamique généraliste

  • extrêmement portable

  • très stable

Slogan

  • TIMTOWTDI

    • There is more than one way to do it

  • les trois vertus du programmeur :

    • paresse

    • impatience

    • orgueil

Points forts

  • multi-paradigmes : impératif, fonctionnel, objet

  • types de base : scalaire (chaîne, nombre), tableau, hash (tableau associatif)

  • gestion de mémoire par ramasse-miettes

  • expressions régulières

  • OO : multi-héritage, surcharge d'opérateur, fermetures

  • Unicode

  • DWIM

Points faibles

  • (faiblement typé)

  • très (trop) permissif

  • paradigme objet très (trop) simple

  • ramasse-miettes par comptage de références

  • syntaxe devenue lourde pour certaines opérations

Perl

  • langage mature, très stable

  • Perl 5.8 en production massive, stable

  • Perl 5.10 en production

  • Perl 5.12 en cours de déploiement

  • Perl 5.14 en 2011

  • Perl 5.16 en 2012

CPAN

  • Comprehensive Perl Archive Network

  • collection centralisée et distribuée de modules

  • créé en 1995

  • http://www.cpan.org/

  • >8.0 Go, >22 000 distributions, >4 000 auteurs

  • 257 miroirs

Search CPAN

  • http://search.cpan.org/

  • intégration distribuée de nombreux services

    • permaliens (par exemple : http://search.cpan.org/dist/Dancer/)

    • documentation en ligne + code source

    • navigation dans la distribution

    • rapports de tests automatiques

    • gestionnaire de tickets

    • forum de discussion dédié

    • système de notes et de critiques

Search CPAN

Search CPAN

Search CPAN

Search CPAN

Search CPAN

cpan(1)

  • commande et shell d'installation des modules

  • installation automatique des dépendances

  • exécution automatique des tests

cpan(1)

 $ cpan
 cpan shell -- CPAN exploration and modules installation (v1.9402)
 Enter 'h' for help.

 cpan[1]> install Dancer
 Database was generated on Sat, 30 Apr 2011 13:06:23 GMT
 Running install for module 'Dancer'
 Running make for X/XS/XSAWYERX/Dancer-1.3030.tar.gz
 Checksum for /Users/maddingue/Downloads/MiniCPAN/authors/id/X/XS/XSAWYERX/Dancer-1.3030.tar.gz ok
 [...]
   CPAN.pm: Going to build X/XS/XSAWYERX/Dancer-1.3030.tar.gz
 
 Checking if your kit is complete...
 Looks good
 Writing Makefile for Dancer
 [...]
   XSAWYERX/Dancer-1.3030.tar.gz
   /usr/bin/make -- OK
 Running make test
 [...]
 All tests successful.
 Files=200, Tests=1694, 200 wallclock secs ( 3.06 usr  2.33 sys + 92.82 cusr 23.63 csys = 121.84 CPU)
 Result: PASS
   XSAWYERX/Dancer-1.3030.tar.gz
   /usr/bin/make test -- OK
 Running make install
 [...]
 Appending installation info to /System/Library/Perl/5.8.6/darwin-thread-multi-2level/perllocal.pod
   XSAWYERX/Dancer-1.3030.tar.gz
   sudo make install  -- OK

cpan(1)

  • cpanp (CPANPLUS)

    • autre shell d'installation, plus modulaire

  • cpanm (cpanminus)

    • autre commande d'installation, plus simple

    • fonctionne sans aucune configuration préalable

    •  cd ~/bin
       wget http://xrl.us/cpanm
       chmod +x cpanm

Les joyaux du CPAN

  • paradigme objet

    • Moose

Les joyaux du CPAN

  • expressions régulières

    • Regexp::Common, Regexp::Assemble

  • analyse

    • Parse::Yapp, Parse::RecDescent

    • Regexp::Grammars

Les joyaux du CPAN

  • date et heure

    • DateTime

    • DateTime::TimeZone

    • DateTime::Set, DateTime::Span

    • DateTime::Calendar:: Chinese, Christian, Coptic, FrenchRevolutionary, HalariSamvata, Hebrew, Japanese, Mayan, Pataphysical, ShalivahanaShaka, VikramaSamvata

Les joyaux du CPAN

  • XML

    • XML::LibXML, XML::LibXSLT

    • XML::Twig

Les joyaux du CPAN

  • bases de données

    • DBI

    • MySQL, PostgreSQL, SQLite, Oracle, JDBC, ODBC, Sybase, ADO DB, Unify et encore plus...

    • DBI::Proxy, DBD::Gofer

Les joyaux du CPAN

  • client web

    • LWP

    • HTML::Parser, HTML::TreeBuilder, HTML::DOM

    • WWW::Mechanize

    • WWW::Scripter

    • WWW::Mechanize::Firefox

Les joyaux du CPAN

  • génération de HTML, templating

    • Mason, Template Toolkit

  • frameworks web modernes

    • Dancer

    • Catalyst

Les joyaux du CPAN

  • calcul massif

    • PDL (Perl Data Language == MatLab en Perl)

Les joyaux du CPAN

  • programmation événementielle/asynchrone

    • POE (Perl Object Environment)

    • AnyEvent, EV (libev)

CPAN

  • des dizaines de nouveaux modules chaque jour

  • de nouvelles idées chaque semaine

  • de nouveaux paradigmes chaque année

CPAN

  • programmation LEGO

  • permet la création de logiciels complexes

  • excellente plate-forme de développement

  • à la fois communautaire et de qualité industrielle

  • contribution active de sociétés

LEGO

Et concrètement ?

Applications connues

  • Movable Type (plateforme de publication pour entreprises)

  • Koha (gestion de bibliothèque)

  • TWiki, Foswiki, Kwiki, MojoMojo (wikis)

  • Sympa (gestionnaire de listes de diffusion)

  • SpamAssassin (filtre courriel)

Applications connues

  • BackupPC (sauvegarde)

  • FusionInventory, OCS Inventory

  • GC Star (gestionnaire de collections)

Utilisateurs

  • sociétés :

    • Amazon, eBay, Price Minister, ShopZilla, Ticket Master, Booking, IMDb, Yahoo!, Slashdot, Live Journal, Friendster, Flickr, Google, Opera, AMD, Mandriva

  • banques :

    • Citigroup, Morgan Stanley, Deutshe Bank, Bank of America, UBS (Union de Banques Suisses), BNP Paribas

Utilisateurs

  • médias :

    • AFP (Agence France Presse), BBC

  • organismes gouvernementaux :

    • NASA, ESA, Météo France, Institut Météorologique Norvégien, Ministère des Finances français

  • opérateurs réseaux et associés :

    • France Télécom - Orange, Free Télécom, Cisco, Vodafone, Sifira, OVH, Gandi, VeriSign

CPAN

  • « CPAN is the language, Perl is just its syntax » - Audrey Tang

  • véritable richesse de Perl

  • ciment de la communauté

Communauté

  • http://cpan-explorer.org/

  • dépendances entre modules

  • liens entre auteurs

  • communauté très active

  • Usenet, forums, listes de diffusion, IRC

Conférences

  • The Perl Conference (TPC) en 1997, par O'Reilly

    • depuis devenue OSCON, très professionnelle (très chère)

  • conférences communautaires (grassroot)

    • Yet Another Perl Conference (YAPC)

    • Perl Workshop (PW)

    • Hackathons

    • 27 en 2008, 27 en 2009, 23 en 2010, 12 en 2011

Conférences

Communauté

Globe-trotter

Lecture

Lecture

  • Perl moderne

  • expressions régulières actuelles

  • objet moderne avec Moose

  • bases de données avec DBI

  • programmation événementielle avec POE

  • navigation sur le web avec LWP et WWW::Mechanize

  • http://perlmoderne.fr/

Questions ?

Merci