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
Practical Extraction and Report Language
langage interprété et dynamique
libre : GNU GPL et Artistic License
créé en 1987 par Larry Wall
Caractéristiques :
lunettes carrées
moustache
chemise hawaïenne
Perl 1.000 - 1987
Perl 2.000 - 1988
Perl 3.000 - 1989
Perl 4.000 - 1991
Perl 4.036 - 1993
Perl 5.000 - 1994
Perl 5.001 - 1995
Perl 5.002 - 1996
Perl 5.003 - 1996
Perl 5.004 - 1997
Perl 5.005 - 1998
Perl 5.6 - 2000
Perl 5.8 - 2002
...
Perl 5.10 - 2007
Perl 5.12 - 2010
Perl 5.14 - 2011
à 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
TIMTOWTDI
There is more than one way to do it
les trois vertus du programmeur :
paresse
impatience
orgueil
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
(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
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
Comprehensive Perl Archive Network
collection centralisée et distribuée de modules
créé en 1995
>8.0 Go, >22 000 distributions, >4 000 auteurs
257 miroirs
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
commande et shell d'installation des modules
installation automatique des dépendances
exécution automatique des tests
$ 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
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
paradigme objet
Moose
expressions régulières
Regexp::Common
, Regexp::Assemble
analyse
Parse::Yapp
, Parse::RecDescent
Regexp::Grammars
date et heure
DateTime
DateTime::TimeZone
DateTime::Set
, DateTime::Span
DateTime::Calendar::
Chinese, Christian, Coptic, FrenchRevolutionary,
HalariSamvata, Hebrew, Japanese, Mayan, Pataphysical, ShalivahanaShaka,
VikramaSamvata
XML
XML::LibXML
, XML::LibXSLT
XML::Twig
bases de données
DBI
MySQL, PostgreSQL, SQLite, Oracle, JDBC, ODBC, Sybase, ADO DB, Unify et encore plus...
DBI::Proxy
, DBD::Gofer
client web
LWP
HTML::Parser
, HTML::TreeBuilder
, HTML::DOM
WWW::Mechanize
WWW::Scripter
WWW::Mechanize::Firefox
génération de HTML, templating
Mason, Template Toolkit
frameworks web modernes
Dancer
Catalyst
calcul massif
PDL (Perl Data Language == MatLab en Perl)
programmation événementielle/asynchrone
POE (Perl Object Environment)
AnyEvent, EV (libev)
des dizaines de nouveaux modules chaque jour
de nouvelles idées chaque semaine
de nouveaux paradigmes chaque année
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
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)
BackupPC (sauvegarde)
FusionInventory, OCS Inventory
GC Star (gestionnaire de collections)
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
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 is the language, Perl is just its syntax » - Audrey Tang
véritable richesse de Perl
ciment de la communauté
dépendances entre modules
liens entre auteurs
communauté très active
Usenet, forums, listes de diffusion, IRC
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
en France
les Mongueurs de Perl : http://mongueurs.net/
YAPC::EU 2003 à Paris : http://yapc.eu/2003/
Journées Perl : http://journeesperl.fr/
8e édition cette année, les 24 et 25 juin
OSDC.fr : http://osdc.fr/
3e édition cette année, en octobre
Les dossiers de Linux Magazine : Perl
introduction au langage Perl
présentation de la communauté
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