À propos de Perl
Perl est un langage de programmation très populaire, créé en 1987 par Larry Wall. Son nom signifie Practical Extraction and Report Language. Le code de son interpréteur est placé sous licence GNU GPL et Artistic License.
Perl est un langage très riche et puissant ; c'est une boîte à outils fort utile dans de nombreuses situations. Perl a une prédilection pour les données textuelles (tous les formats à la mode sont au format texte !) : bases de données, flux et protocoles réseaux (web, courriel, SNMP, LDAP, etc), administration système (logs, configuration), manipulation de formats de données (XML, CSV, etc), algo du texte (génômique, linguistique), etc. C'est une glu générale entre presque tout.
Couteau suisse du monde UNIX, ses nombreuses bibliothèques le rendent vite irremplaçable aux yeux de ceux qui en acquièrent la maîtrise. Performant également sous Windows, il est porté sur de très nombreuses autres plateformes.
Avantages
Un vrai langage puissant :
- Programmations impérative, fonctionnelle et orientée objet,
- Récursivité, modularité, exceptions,
- Tableaux, listes et tables de hachage natifs,
- Gestion mémoire : ramasse-miettes,
- Expressions régulières,
- Surcharges d'opérateurs, fermetures (closures),
- Richesse des bibliothèques (efficacité de programmation),
- Multi plateforme,
- Apprentissage facilité,
- Déguggeur intégré,
Types de données
Ses types de données ont pour caractéristiques : simplicité, souplesse et puissance. Le développeur bénéficie de la capacité d'introspection, de structures anonymes, de l'autovivification, du support natif d'unicode, etc. Trois types de données :
- Scalaire : donnée atomique,
- Tableau avec une gestion dynamique et automatique de la taille,
- Table de hachage qui est une association clef / valeur.
Facilités diverses
Perl aide vraiment le développeur et l'administrateur système et réseau dans leur travail. De nombreux facilités permettent une grande efficacité :
- Manipulation aisée des fichiers : l'accès aux wild-cards du shell (/usr/include/*.h) pour lister des fichiers et aux opérateurs de tests (-f -w -d -e -s etc) rendent le programme plus facile à écrire et à lire.
- Gestion des arguments : outre les modules de gestion fine de paramêtres de la ligne de commande, le fichier virtuel ARGV simule le comportement standard des outils UNIX pour la lecture : lecture automatique dans les fichiers passés en paramètres ou bien sur l'entrée standard dans le cas où le programme est lancé sans argument (gestion automatique des ouvertures et fermetures des fichiers). Pratique pour écrire rapidement un filtre !
- Les expressions régulières sont intégrées au langage pour une grande facilité de manipulation, avec de puissantes fonctionnalités : ensembles plus riches, quantificateurs non gourmands, etc. Perl est la référence dans le monde des regexp : PCRE (Perl compatible regular expressions) est intégré dans de nombreux langages (C, PHP, JAVA, etc) et outils (Postfix, Apache etc).
- etc
Références et programmation par objets
Les références permettent la gestion des données par adresses, mais contrairement au langage C ou C++, la manipulation des références des références est sure (pas d'arithmétique) et souple (contrairement à Java). Les références anonymes et le garbage collector permettent une gestion aisée de la mémoire.
Toutes les fonctionnalités objet sont disponibles en Perl :
- Classes et instances,
- Méthodes et champs statiques,
- Héritage multiple,
- Polymorphisme,
- Encapsulation,
- Typage dynamique ...
Moose introduit une programmation objet nouvelle génération.
Avec Perl, on allie la généricité de l'objet et puissance d'un langage souple.
Modules
La richesse du langage vient aussi de ses librairies, appelé «modules». Ceux-ci appportent un grande puissance et rapidité de mise en œuvre dans de nombreux domaines :
- Formats
- XML : XML::Simple, XML::DOM, XML::Parser (expat), XML::Twig, XML::SAX, XML::LibXML::Schema, XML::LibXSLT, SVG ...
- HTML : HTML::TreeBuilder, Web::Scraper, HTML::PrettyPrinter, WebService::Validator::HTML::W3C ...
- PDF ODF : PDF::Create, PDF::API2, ODF::lpOD, OpenOffice::OODoc
- Courriel : MIME::Lite, MIME::Parser, Mail::Box, MIME::Base64
- Archivage : Archive::Tar, Archive::TarGzip, Compress::Bzip2, Archive::Zip ...
- Graphisme : GD, Gimp (plugins), Image::Magick ...
- Chiffrement : GnuPG::Interface, Crypt::Blowfish, Crypt::DSA ...
- Divers : YAML, JSON, Unicode::MapUTF8, Text::CSV\_XS ...
- Réseau
- HTTP : LWP::UserAgent (HTTP::Request, HTTP::Response, HTTP::Cookies), WWW::Mechanize, WWW::Scripter, WWW::Mechanize::Firefox
- Web : PSGI/Plack, Starman, HTTP::Daemon, CGI, mod_perl
- Framework : Dancer, Catalyst, Jifty, Maypole, Mojolicious
- Courriel : Net::SMTP, Net::SMTP::TLS::ButMaintained, Net::IMAP ...
- SSH : Net::SSH, Net::SCP, Net::SFTP ...
- LDAP : Net::LDAP, Net::LDAPS ...
- Base de données : DBI : MySQL, PostgreSQL, Oracle, Informix, SQLServer, ODBC ..., ORM avec Class::DBI, DBIx::Class
- FTP : Net::FTP, Net::FTPServer ...
- Autre : IO::Socket, URI, Net::Ping, Net::DNS, Net::IRC, Net::NNTP ...
- Divers
- Objet : Moose, Mouse, Moo - inspirés de Perl 6
- Tests : Test::More, Test::Harness, Test::Deeply, Devel::Cover
- Maths : Math::Complex, Math::BigInt, Math::BigFloat ...
- Templates : HTML::Template, Mason, Template Toolkit, Petal
- Temps : Date::Manip, Time::Timezone
- Profilage : Benchmark, Devel::NYTProf
- Système : POSIX, Fcntl, IPC::..., thread, Parallel::ForkManager
- GUI : Tk, Gtk2, QT, Curses ...
- Langages : XS (langage C), Inline C, Tcl, Python, Java, PHP
- Divers : Digest::MD5, Getopt::Long, File::MMagic, File::Basename, Storable, Clone, Term::ReadKey
Quelques utilisations de Perl
De nombreuses entreprises connues utilisent Perl :
- Organismes gouvernementaux : NASA, ESA, Météo France, Institut Météorologique Norvégien, Ministère du budget (télédeclaration avec Perl Apache LDAP), Gendarmerie Nationale, Assurance Maladie, CNRS
- Banques : Union de Banques Suisses, BNP Paribas, Citigroup, Deutshe Bank, Bank of America, Morgan Stanley, Merrill Lynch
- Media : M6, BBC, AFP, Le Monde
- Opérateur/hébergeur/registrar : France Télécom - Orange, Free Télécom, Vodafone, AFNIC, VeriSign, Gandi, OVH, LinkByNet
- Entreprises du web : Yahoo! (La plupart de notre code est écrit en Perl, un langage étonnamment efficace. On peut tout faire en Perl !), Google, Slashdot, Flickr
- E-commerce : PriceMinister, eBay, Amazon.com, TicketMaster, Booking.com, ShopZilla, Expédia (voyagiste : SNCF, etc). L'OMS, salon.com et macworld.com utilisent le CMS Bricolage.
- Autre : Les Nouveaux Constructeurs, Lyreco
De nombreux logiciels utilisent Perl :
- Koha (gestion bibliothèque), Mioga2 (collecticiel), Frozen-Bubble (jeu)
- Courriel : Sympa, SpamAssassin, Open Webmail, imapsync
- Gestionnaires de tickets : Request Tracker, OTRS, Bugzilla
- DrakX / Urpmi (installeur / gestionnaire packages Mandriva)
- AwStats (analyseur de log), ISPMan (outil pour les FAI)
- Rational : ClearCase (gestion de conf), ClearQuest
- Systran : logiciel de traduction
- VMWare (CLI des ESXi en Perl) : virtualisation
Perl pour vous
Perl n'a cessé d'évoluer depuis plus de 30 ans, gage de son dynamisme, grâce à une communauté active et soudée (coordination, coopération, financement, etc).
Perl est riche, puissant et souple. Il est fait pour vous.