Perl (langage)
Gelose | Tous les portails | Portail Medecine | Portail Biologie | Portail Biochimie | Portail Microbiologie | Portail Ecologie | Portail Botanique | Biologie cellulaire | Portail Zoologie | Science de la terre | Portail Eau |
Inscrivez votre site en haut de cette page Soumission direct par Allopass, obtenez 1 lien de qualite en haut de cette page Perl -langage ainsi que sur la page des nouveaux sites inscrits pour seulement 20 euros!
|
![]() |
|
|---|---|
| Apparu en | 1987 |
| Auteur | Larry Wall |
| Développeurs | The Perl Foundation |
| Dernière version | 5.8.8 (30 Juin 2006) |
| Paradigmes | Objet, impératif, fonctionnel |
| Typage | Fort, dynamique |
| Influencé par | C, BASIC, shell, sed, awk |
| A influencé | Ruby, Python, PHP, Perl 6 |
| Implémentations | Perl |
| Système d'exploitation | Multi-plate-forme |
| Licences | GPL, Perl Artistic License |
| Site Web | http://www.perl.org |
Perl est un langage de programmation créé par Larry Wall en 1987 et reprenant des fonctionnalités du langage C et des langages de scripts sed, awk et shell (sh).
Larry Wall donne deux interprétations de l'acronyme "PERL":
- Practical Extraction and Report Language ou langage pratique d'extraction et de génération de rapports
- Pathetically Eclectic Rubbish Lister ou collectionneur pathétiquement éclectique de déchets
Ces noms sont des rétro-acronymes.
L'association en charge du développement et de la promotion de Perl est The Perl Foundation. En France, les Mongueurs de Perl promeuvent ce langage, notamment via les Journées Perl.
Sommaire |
[] Origines et mises en œuvre
[] Le but
Perl est né du besoin de disposer d'un langage optimisé pour l'extraction d'informations de fichiers textes et la génération de rapports. Avant la naissance de Perl, les traitements sur le texte devaient être faits au moyen de scripts shell, en utilisant les programmes sed, awk, grep, cut, test et expr. Beaucoup de limites apparaissaient quand on utilisait cette programmation : format des données d'entrée pas toujours souple, difficulté de passer des données d'un processus à l'autre, lenteur due au lancement de multiples programmes (le coût du lancement d'un processus n'était pas négligeable), dépendance à une mise en œuvre particulière d'une commande, bogues intrinsèques à certains langages (awk ne différencie pas la comparaison de nombres et de chaînes de caractères). Perl regroupe et emprunte sa syntaxe concrète à tous ces mini langages, dont le shell, en ajoutant une partie de la syntaxe du C et les fonctions des bibliothèques système en C.
Voici quelques-unes des devises qui lui sont couramment associées :
- There Is More Than One Way To Do It (TIMTOWTDI) qui pourrait se traduire par Il y a plus d'une façon de le faire : Perl propose tellement de bibliothèques et de fonctions que vous trouverez souvent 3 ou 4 manières de réaliser une même opération.
- Perl : la tronçonneuse suisse des langages de programmation pour les même raisons.
- Perl : l'assistant idéal des administrateurs de système la majorité les fichiers de configuration étant en texte sous Unix.
Sa souplesse autorise l'emploi de plusieurs modèles de programmation : procédurale, fonctionnelle et orientée objet.
[] Les moyens
Perl vise la commodité pour le programmeur (existence de raccourcis qui le font qualifier de langage « diagonal ») plutôt qu'un souhait esthétique d'architecture stricte (langages « orthogonaux »). Perl est un langage de script, très complet et multiplatforme, et a été qualifié de « ciment assurant la cohésion du web », étant le langage le plus populaire pour l'écriture de script CGI.
Perl est également capable d'exécuter des scripts 'in-process' dans un serveur web apache, grâce à l'extension mod_perl . Cette solution offre des performances équivalente à celles de PHP, voire de servlets Java.
Perl a un statut de logiciel libre, distribué double licence : artistique et GPL. Perl est porté sur la plupart des systèmes d'exploitation mais excelle particulièrement en environnement POSIX (Linux, Mac OS X, Cygwin sous Microsoft Windows etc.) ; il devient populaire aussi sous Microsoft Windows (hors Cygwin) grâce à la facilité d'installation de la distribution gratuite ActivePerl (dont la version 5.8 permet l'usage de l'Unicode ou de l'interface graphique) et d'environnements de développement gratuits comme SciTE ou epic pour eclipse, ou commerciaux comme Komodo.
[] Syntaxe et sémantique
Perl est un langage impératif dont la syntaxe est dérivée du langage C et des shells UNIX. Comme en shell, le caractère dièse introduit un commentaire. La syntaxe de Perl est riche ce qui permet d'exprimer de manière concise des expressions qui, dans d'autres langages, nécessiterait l'usage d'appel à des fonctions de bibliothèques . Mais on peut se restreindre initialement à un sous-ensemble du langage.
On décrit Perl généralement comme un langage typé dynamiquement. Cette caractérisation est incomplète car Perl est aussi typé statiquement mais comporte peu de types. En effet le premier caractère des identificateurs de variable est un caractère non alphanumérique appelé sigil. Comme pour les shells Unix, le sigil dollar dénote une variable scalaire, le sigil arobase désigne une variable tableau et le sigil pourcentage un tableau associatif, aussi appelé hashage ou hash. Les tableaux peuvent être utilisés comme des piles ou des files.
Perl supporte des déclarateurs qui désignent le type fermeture des variables déclarées :
my $s = 'toto' ; # variable scalaire à portée lexicale local $level += 1; # variable scalaire avec une valeur à portée dynamique our @s = (1, $s, 3.14); # variable tableau globale au module courant
Les sigils permettent de reconnaître les noms de variables dans des chaînes de caractères et d'interpoler ces variables.
print "la variable toto vaut $toto";
Perl permet de construire facilement des structures complexes et composites. Là encore, beaucoup d'autres langages imposeraient l'appel explicite de constructeurs d'instances.
my %a = ( clef1 => [1, 2], clef2 => [ 3, 4] );
Le module XML::Literal disponible sur le CPAN permet de supporter des littéraux de type XML de manière similaire à l'extension normalisée E4X d'ECMAScript.
Le langage Perl est en constante évolution mais avec un soin tout particulier au maintien de la compatibilité descendante.
[] L'avenir proche
La prochaine version majeure de Perl, la 5.10, incluera des fonctionnalités inspirées par le futur Perl 6 comme une structure de contrôle switch beaucoup plus puissante que celle de C, et les captures nommées pour l'opérateur match. L'effort de conception de Perl 6 débouche donc déjà sur une vigueur renouvelée de Perl 5.
[] L'avenir à moyen terme
Perl 6 est en cours de développement. Il tournera dans la machine virtuelle Parrot.
Le développement de Parrot a atteint une étape critique au début de l'été 2006 avec la mise en œuvre du système de règles Perl 6 ce qui permet de s'affranchir d'outils externes comme yacc ou lex.
En parallèle, Audrey Tang, aidée d'un petit groupe développe un interpréteur Perl 6 en Haskell nommé Pugs. Cette mise en œuvre permet de valider et d'affiner les spécifications et d'écrire et faire tourner des jeux de tests.
De nombreuses fonctionnalités mises en œuvre par des bibliothèques en Perl 5 seront disponibles nativement en Perl 6. Ainsi l'analyse syntaxique sera intégrée dans le moteur d'expressions rationnelles. Aujourd'hui un analyseur LALR peut s'écrire par le module Parse::Yapp, clone de yacc. Parse::RecDescent est un module qui permet l'écriture d'un analyseur récursif descendant.
[] L'intégration dans l'existant

Les programmes Perl sont intégralement portables entre Linux, Mac OS X (ou autre UNIX) et Windows malgré les désignations de fichiers différentes de ces systèmes (Perl remplace tout seul si besoin les « / » par des « \ »). Un exemple du champ d'action de Perl est son utilisation comme script CGI pour faire tourner Wikipedia jusqu'en janvier 2002. Il constitue en effet un bon langage de prototypage.
Perl permet l'usage du moteur d'interface graphiques Tk pour effectuer des entrées-sorties conformes à l'état de l'art. On désigne parfois l'ensemble sous le nom générique Perl/Tk. L'extension Tk est intégrée à ActivePerl depuis la version 5.8 du langage.
Des interfaces graphiques autre que le vieillissant Tk sont supportés par des bibliothèque de CPAN.
TkZinc [1] apporte un look rajeuni de Tk. PerlQt [2]supporte Qt 3.x. Gtk2 [3] supporte Gtk 2.x. wxperl [4] supporte wxWindows. wxWindows a l'avantage de fournir le look natif du système de fenêtrage utilisé. Sous Mac OS X, CamelBones [5] donne accès à l'API de Cocoa.
[] Les ressources
Plus de 15 millions de lignes de modules Perl d'utilisation libre, allant des mathématiques avancées aux connexions aux bases de données, en passant par les réseaux, la simulation d'un calculateur quantique et bien davantage, peuvent être téléchargées depuis un réseau de sites appelé CPAN : Comprehensive Perl Archive Network.
[] Le mécanisme
Perl5 est un langage dont la nature hautement dynamique rend assez floue la distinction entre les phases de compilation et d'exécution. De plus, la phase de compilation ne génère pas un bytecode comme c'est le cas de beaucoup d'autres langages interprétés, mais un arbre syntaxique (AST, Abstract Syntax Tree).
En pratique, Perl commence par traduire le code source, instruction par instruction, en AST, qui est par la suite optimisé. Si des instructions sont situés dans un bloc spécial comme BEGIN ou CHECK, elles sont exécutés dès leur compilation (et donc avant que le reste du code source soit compilé). C'est le cas en particulier des modules chargés par l'instruction use. L'AST en lui-même est un peu plus élaboré qu'un AST usuel car il contient déjà les chemins d'exécution. Lors de la phase d'exécution, l'interpréteur suit donc les chemins présents dans l'AST et exécute les instructions restantes.
Pour plus de détails sur ces blocs et leur ordre exact d'exécution, consulter la section BEGIN, CHECK, INIT and END de perlmod.
Contrairement à ce que certains peuvent croire, Perl5 n'utilise donc à aucun moment de bytecode. Le projet de compilation en bytecode commencé lors de Perl 5.005 par Malcom Beattie n'a jamais totalement aboutit, n'a jamais été vraiment fonctionnel, et sera donc probablement retiré de Perl 5.10. Ce n'est toutefois pas une grande perte car l'arrivée de Parrot offre une solution qui, si elle n'est pas encore fonctionnelle, sera clairement plus stable et plus pérenne.
La compilation de Perl6 passe par le moteur de règles (l'équivalent plus avancé des expressions rationnelles actuelles), qui produit un AST classique. Celui-ci est ensuite transcrit dans un autre langage, par défaut le bytecode Parrot. Le compilateur expérimental Pugs permet de transcrire l'AST dans des langages aussi variés que Perl 5, Parrot, JavaScript, Haskell. Dans le cas du bytecode Parrot, celui-ci est exécuté par la machine virtuelle du même nom, qui dispose de plusieurs modes de fonctionnement internes, dont un système de compilation à la volée pour offrir les performances maximales sur chaque architecture hôte.
[] Exemples de code
Certaines personnes affirment avec humour que Perl veut dire 'Pathologically Eclectic Rubbish Lister' (collectionneur pathologique de déchets variés) à cause de l'utilisation intensive de caractères spéciaux chargés de sens dans la syntaxe du langage, comme on peut le voir dans cet exemple de programme:
# Un exemple de programme en Perl
$message = "À l'endroit : 'camel'.\n";
print $message;
$message =~ s/endroit/envers/;
$message =~ s/('\w+')/reverse($1)/e;
print $message;
exit 0
et sa sortie à l'écran :
À l'endroit : 'camel'. À l'envers : 'lemac'.
Les troisième et quatrième lignes de cet exemple montrent l'usage d'expressions rationnelles.
Ces caractères spéciaux sont liés à la puissance de traitement de Perl :
- scalaires désignés par $ : $nom = "Toto"; $z=3;
- tableaux désignés par @, indexés par [] : $nom[95] = "Val d'Oise"; (le 96e élément du tableau est comme les autres un scalaire!)
- tableaux associatifs, ou hashs désignés par %, indexés par {} : $code{"Val d'Oise"} = 95; (leurs éléments sont des scalaires aussi)
[] Faux amis
Certains mots on un sens différent en Perl que celui dans la littérature non Perl et le reste du wikipédia. Pour chaque mot, nous donnons le nom français, le nom anglais entre parenthèses, et la définition en terme du vocabulaire du wikipédia.
- Une fonction (function) est une fonction prédéfinie par le langage.
- Une routine, aussi appelée sous-routine, (subroutine) est une fonction définie dans le programme ou une bibliothèque utilisée.
[] Aspects communautaires
Perl a une base d'utilisateurs vaste et diversifiée. Pour plusieurs types d'utilisateurs du langage, c'est d'ailleurs leur seul point commun. Les administrateurs système en sont friands, les développeurs en apprécient la concision et la puissance, des linguistes et des biologistes - habituellement peu enclins à se pencher sur le code - l'utilisent comme langage de référence dans leurs applications métiers. Perl est particulièrement apprécié en bio-informatique où les programmes font l'objet de remaniements constants.
La base CPAN regroupe et met gratuitement à la disposition des utilisateurs de Perl du monde entier 15,4 millions de ligne de code (juillet 2004) sous forme de modules Perl et de synopsis montrant comment les mettre en œuvre. L'effet boule de neige est indiscutable. La synergie aussi.
[] Trivia
On écrit généralement le nom de ce langage avec un P majuscule pour désigner le langage et un p minuscule en parlant de l'interpréteur : « seul perl analyse correctement Perl. » Une conséquence est qu'un système de coloration syntaxique d'un programme Perl devrait utiliser l'interpréteur Perl pour être totalement correct. En pratique, des modules pur Perl comme Perl::Tidy et PPI arrivent à comprendre correctement la majeure partie du code courant.
Un canular organisé par l'équipe de direction de l'éditeur O'Reilly avec la complicité de Larry Wall et Guido van Rossum (avec annonce d'un livre imaginaire dont l'annonce donnait le fac-simile) a annoncé à une époque la fusion en un langage unique nommé aussi Parrot de Perl 6 et de Python, à la grande panique de certains aficionados des deux langages.
Compte-tenu du rôle qu'a eu Perl dans le développement de la « nouvelle économie », une boutade prêtait à la mairie de New York l'intention de rebaptiser Wall Street du nom de son inventeur, ce qui aurait au moins le mérite de ne pas entraîner du tout de frais pour le contribuable !
[] Logiciels écrits en Perl
- Diverses bibliothèques couvrent le continuum des systèmes de gestion de contenu, des wikis et des blogs. Perl est au cœur de sites comme Slashdot, Everything2, Kuro5hin, LiveJournal
- Request Tracker, un système de gestion de bugs
- GNU Automake génère des makefiles portables
- Fink est un projet open source destiné à porter vers Mac OS X des applications originellement écrites pour UNIX
- SVK est un système de gestion de version de code. C'est une extension de Subversion
- Movable Type est une plateforme de publication pour entreprises, utilisée par des sociétés comme General Motors
- Blosxom (prononcer «blossomme») est un logiciel de blog et un système de gestion de contenu
- Sympa, gestionnaire de listes de diffusion
- SpamAssassin, filtre courriel anti-spam
- Bugzilla, gestionnaire de bugs
- Webmin, logiciel de configuration d'une machine via une interface web
- Drakconf, le système interactif de configuration de Mandriva
- Urpmi, le gestionnaire de packages de Mandriva, ainsi que l'installeur et les outils de configuration sont tous écrits en Perl
- Frozen Bubble, jeu d'arcade
- Open Webmail
- AwStats, analyseur de logs
- Mioga, outil de travail collaboratif
- Rational : ClearCase (gestion de configuration), ClearQuest
- SysTran : logiciel de traduction linguistique
- Des robots IRC sont écrits en Perl (infobot) ou proposent des interfaces Perl (eggdrop)
[] Annexes
[] Bibliographie
[] Généralités
- Larry Wall, Tom Christiansen et Jon Orwant (2001), Programmation en Perl, ISBN 2-84177-140-7
[] Applications
- James Tisdall, Introduction à Perl pour la bioinformatique, O'Reilly, ISBN 2841772063
[] Voir aussi
- APL | Lisp | Python | Ruby | Tcl
- Expression rationnelle
- SciTE
- Perl et le calcul quantique
- DWIM
- Principe de Huffman
[] Liens externes
[] Ressources majeures
- (en) Portail Perl officiel
- (en) La Fondation Perl, qui finance le développement de Perl et l'organisation des conférences
- (en) Documentation de Perl, en anglais (version PDF disponible)
- (fr) Documentation de Perl, en français (version PDF disponible)
- (en) CPAN, le Comprehensive Perl Archive Network est un réseau de miroirs proposant des milliers de modules, pour répondre à tous les besoins ou presque
- (en) Search CPAN est une interface de recherche des modules du CPAN, et permet aussi de lire la documentation en ligne
- (en) Kobes' CPAN Search offre plusieurs services, dont la recherche et la navigation de modules, la recherche plein-text de la documentation, l'indexation de paquets PPM (modules précompilés pour les distributions d'ActiveState)
[] Distributions
- (en) ActiveState : Perl gratuit pour les environnements Microsoft Windows, Linux et bien d'autres plates-formes, avec documentation hypertexte
- (en) IndigoPerl, une autre distribution de Perl pour Microsoft Windows
- (en) Cygwin intègre aussi un Perl complet
- (en) TinyPerl : Un Perl simplifie ultra leger
[] Développement présent et futur
- (en) Développement de Perl 5
- (en) Développement de Perl 6, la future version du langage
- (en) Développement de Parrot, la machine virtuelle qui exécutera le bytecode Perl6, mais aussi Python, Ruby, et bien d'autres langages
- (en) Pugs, un interpréteur Perl 6 écrit en Haskell
[] Livres
- (en) Liste des livres disponibles sur Perl
- (fr) Listes des livres O'Reilly disponibles en français
- (en) Liens vers des livres disponibles en ligne
[] Articles, cours, formations
- (en) Articles publiés sur le portail Perl d' O'Reilly Network
- (fr) Introduction à la programmation en Perl (par Sylvain Lhullier)
- (fr) Articles des Mongueurs de Perl, publiés dans Linux Magazine France
- (en) Articles écrits par Randal Schwartz, et publiés dans des magazines informatiques étatsuniens dont Linux Magazine
- (en) Articles publiés sur le portail developerWorks d'IBM
- (fr) Cours d'auto-formation Perl
- (fr) Cours de Perl francophone et exemples
- (fr) Labo-Linux : Perl - Introduction au langage Perl
- (fr) PerlFAQ en 9 volumes à utiliser sous Linux (Man officiel de la perlfaq en français) :
- (fr) PerlFAQ 1 - Questions d'ordre général sur Perl
- (fr) PerlFAQ 2 - Trouver et apprendre Perl
- (fr) PerlFAQ 3 - Outils et techniques de programmation
- (fr) PerlFAQ 4 - Manipulation de données avec Perl
- (fr) PerlFAQ 5 - Manipulations de fichiers et formats avec Perl
- (fr) PerlFAQ 6 - Expressions rationnelles sous Perl
- (fr) PerlFAQ 7 - Problèmes du Langage Perl
- (fr) PerlFAQ 8 - Perl et l'interaction avec le système
- (fr) PerlFAQ 9 - Perl et le réseau
[] Communautés et groupes d'utilisateurs
- (en) Perl Monks, le monastère Perl, site communautaire tourné vers le pratique du langage et le partage de code
- (en) Use Perl;, site communautaire d'information et de discussion (weblog)
- (en) Perl Mongers : Site de fédération des groupes d'utilisateurs locaux à travers le monde (formés par les Perlmongers)
- (fr) Les Mongueurs de Perl, site des Perl Mongueu(r|se)s francophones
- France : Paris.pm, Marseille.pm, Lyon.pm, Toulouse.pm
- Belgique : Bruxelles.pm
- Pays-Bas : Amsterdam.pm
- Suisse : Geneva.pm
- Grande-Bretagne : London.pm, Birmingham.pm, Belfast.pm
[] Conférences
- La conférence OSCON organisée annuellement aux États-Unis et en Europe par O'Reilly Media comporte des sessions Perl.
- (en) Yet Another Perl Conference, conférences Perl au prix plus abordable que OSCON et organisées annuellement par des groupes de mongers en Europe, en Amérique du Nord, en Amérique du Sud et en Asie.
- (en) YAPC::Europe Foundation, fondation qui aide et finance l'organisation des conférences YAPC en Europe
- (fr) Journées Perl : Paris (2004), Marseille (2005), Paris (Samedi 25 octobre - Dimanche 26 octobre 2006). Beaucoup de pays organisent des conférence Perl dans leur langue.
[] Divers
- (en) Perlcast, un podcast consacré à Perl
- (en) DMOZ sur Perl (voir DMOZ)
|
|