Section courante

A propos

Section administrative du site

Introduction

Le langage de programmation Perl est l'abréviation de «Practical Extraction and Report Language» (soit Langage Pratique d'Extraction et de Rapport en français). Ce langage fut créé par Larry Wall en 1987 en s'inspirant du «AWK».

Ce langage est actuellement utilisé pour les administrateurs systèmes et dans les domaines scientifiques comme la bioinformatique.

Programmation

Ce langage de programmation est souvent perçu comme un langage de programmation système, bien qu'il était énormement utilisé pour la génération de page HTML dynamique au début du Web, il est en constante perte de popularité à se niveau. Par contre, les administrateurs systèmes raffole toujours autant de se langage. Bien que le PHP a pris la place de se langage dans le domaine du Web, il est tout de même intéressant de le connaitre, puisque de nombreux hébergeurs de sites PHP, demande des notions d'utilisations de Perl pour les «cronjobs» par exemple. Il a une bonne adaptation avec le système d'exploitation Linux et FreeBSD, comme par exemple, si on veut lancer programme Bonjour en ligne de commande, on procédera comme suit :

perl -w -e 'print("Bonjour\n");'

De plus, il s'exécute sur presque tous les systèmes d'exploitation : Mac OS X, Windows 2000, Windows XP, Windows Vista, Windows 7, Windows 8, Windows 2003 Server, Windows 2008 Server, FreeBSD, AIX, HPUX, Solaris (SunOS), SkyOS, Linux, OS/2 Warp 4 et eComStation.

En dehors du fait qu'il a un syntaxe extrêmement courte et une surpuissante des expressions régulières (regex), il en demeure pas moins qu'il a une imposante bibliothèque par l'intermédiaire de (CPAN (http://search.cpan.org/) et PPM), des fonctions et d'utilitaires de toutes sortes. Il est par exemple, possible en Perl d'effectuer la sauvegarde d'un document Excel sans utilisé aucune composante du système d'exploitation Windows.

Autre détail, où de nombreux programmeurs ont tendances à se faire prendre lorsqu'il commence à programmer avec le Perl, c'est la comparaison des chaînes de caractères ne s'effectue pas de la même façon que les valeurs numériques. Prenons par exemple :

  1. #!/usr/bin/perl
  2.  
  3. # Les comparaisons de chaine de caracteres se font avec les mots réservés : eq, ne, ge, ...
  4. if("vrai" eq "vrai") {
  5.     print "chaine vrai vaut vrai\n";
  6. } else {
  7.     print "chaine vrai vaut faux\n";
  8. }
  9.  
  10. # Les comparaisons de valeurs numériques se font avec des symboles : ==, >, <,...
  11. if(1 == 1) {
  12.     print "nombre 1 vaut 1\n";
  13. } else {
  14.     print "nombre 1 ne vaut pas 1\n";
  15. }

Ainsi, les types de données ne s'évalue pas tous de la même façon en Perl, même si l'opérateur «==» est supporté, il n'effectue pas le bon type de comparaison sur une chaine de caractères. Les dernières versions de Perl, retourne une message d'attention lorsqu'une situation comme celle-ci se produit.

Ce qui en fait un langage épouvantable pour certains, c'est le fait que se langage soit compliqué à programmer et sa lisibilité laisse souvent à désirer. Les choix du concepteur de se langage afin qu'il soit rapide même si interprété en font un langage à l'apparence bizarre et parfois carrément ésothérique. Il est, entre autre, assez curieux de constater la façon dont il gère ses remarques documentaires. Lorsqu'on exécute un programme écrit en langage de programmation Perl sous des systèmes d'exploitation Unix, Linux ou FreeBSD, il est fortement recommandé d'ajouter la ligne suivante au début du code source afin que le système comprenne bien qu'il s'agit d'un script Perl :

#!/usr/bin/perl -w

De plus, en général, le fichier de code source écrit en Perl porte l'extension «.pl».

Liste des versions

Version Date Commentaires
Perl 1.0 18 décembre 1987 Larry Wall développe la première version du Perl à temps partiel pendant qu'il travail chez Unisys Corporation.
Perl 2 1988 Amélioration du moteur des expressions régulières (regex).
Perl 3 1989 Changement mineurs
Perl 4 1991 Changement mineurs
Perl 4.036 1993 Changement mineurs
Perl 5.000 17 octobre 1994 Nouveau moteur d'analyse du langage de programmation Perl.
Perl 5.001 13 mars 1995 Changement mineurs
Perl 5.002 29 février 1996 Ajout de nouveaux prototypes.
Perl 5.003 25 juin 1996 Correctif de sécurité.
Perl 5.004 15 mai 1997 Inclusion de module universelle.
Perl 5.005 22 juillet 1998 Amélioration des regex, l'opérateur «qr//», nouveau crochet dans les modules B::*, support pour le système d'exploitation BeOS,...
Perl 5.5 22 juillet 1998 Changement mineurs
Perl 5.6 22 mars 2000 La numérotation des versions a été modifiée au format 'revision.version.subversion', la représentation interne des chaînes de caractères est remplacée par UTF-8 et le support EBCDIC n'est plus utilisé, meilleur support de la monnaie, les littéraux de chaîne de caractères peuvent être écrits en utilisant des ordinaux de caractères, nouvelle syntaxe pour les attributs de sous-programme (le pragma «attrs» est maintenant obsolète), prise en charge des fichiers volumineux, prise en charge des nombres binaires, inclusion de la distribution JPL (Java Perl Lingo) dans Perl,...
Perl 5.8 18 juillet 2002 Prend en charge Unicode 3.2.0, les expressions régulières (regex) fonctionnent maintenant avec Unicode, prise en charge des codages non latins via le module Encode, introduction de processus léger d'interprétation, nouvelle intégration de PerlIO, précision numérique améliorée pour la conversion de nombre de chaînes de caractères via une routine intégrée, support 64 bits finalisé, nouveaux modules : Digest::MD5, File::Temp, Filter::Simple, libnet, List::Util, Memoize, MIME::Base64, Scalar::Util, Storable, Switch, Test::More, Test::Simple, Text::Balanced, Tie::File,...
Perl 5.10 18 décembre 2007 Prend un charge Unicode 5.0, nouveau pragma feature, nouvelle opérateur //, nouveau mot réservé switch, nouveau say intégré,...
Perl 5.12 2012 Support du temps après la date de 2037, nouvelle syntaxe permet aux développeurs de spécifier les numéros de version des modules directement dans les instructions «package», Perl avertit maintenant l'utilisateur de l'utilisation de fonctionnalités obsolètes par défaut,...
Perl 5.14 14 mai 2011 Unicode 6.0 est pris en charge, sémantique Unicode appliquée à toutes les chaînes de caractères, substitution non destructive (s///r), expressions régulières rentrantes, déréférence automatique par les préréglages (supprimés ultérieurement),...
Perl 5.16 20 mai 2012 Ajout de __SUB__ pour le sous-programme en cours d'exécution (currently-executing) et eval encoding-disambiguated.
Perl 5.18 18 mai 2013 Ajout d'opérations de jeu de caractères d'expression régulière et sous-routines lexicales (en tant que fonctionnalité expérimentale).
Perl 5.20 27 mai 2014 Ajout de signatures de sous-programmes et déréférencement Postfix (en tant que fonctionnalité expérimentale), syntaxe de tranche clef/valeur,...
Perl 5.22 1 juin 2015 Unicode 7.0 est maintenant supporté, les modules historiques CGI.pm et Module::Build ont été supprimés de la distribution principale, ajout de l'opérateur double diamant, opérateurs au niveau des bits désambiguïsés et variable aliasing (à titre expérimental),...
Perl 5.24 8 mai 2016 Unicode 8.0 est maintenant supporté, nouvelle limite de saut de ligne dans les expressions régulières, les classes de caractères entre crochets étendues fonctionnent dans les environnements locaux UTF-8, définitions plus explicites pour le décalage d'entier, paramètres de précision réordonnés pour printf et sprintf, plus de champs fournis à l'appel en arrière-plan sigaction,...
Perl 5.26 30 mai 2017 Pour des raisons de sécurité, le répertoire actuel (".") m'est plus inclus par défaut à la fin du chemin de recherche du module (@INC), les sous-routines lexicales ne sont plus expérimentales, indentes Here-documents, nouveaux modificateurs d'expression régulière et groupes de capture, Unicode 9.0 est maintenant supporté, Perl peut maintenant effectuer un classement par défaut dans les paramètres régionaux UTF-8 sur les plates-formes le prenant en charge,...
Perl 5.28 22 juin 2018 Ajout du support Unicode 10.0, supprime les tranches de hachage clef/valeur, ajout de synonymes alphabétiques d'assertions d'expressions régulières, les scripts Unicode mixtes sont maintenant détectables, montage sur place avec perl safer, initialisation des variables d'état agrégats, numéros d'inode pleine taille, la taille sprintf %j est maintenant disponible avec les compilateurs pre-C99, le drapeau Close-on-exec est fixé de manière automatiquement, les applications locales sont désormais thread-safe sur les systèmes qui les prennent en charge, ajout de la variable en lecture seulement ${^SAFE_LOCALES},...
... ... ...

Catégorie de fonctions

Enfin, on retrouve comme fonctions de base les suivantes :



Dernière mise à jour : Jeudi, le 17 janvier 2019