Histoire de Perl¶
Perl est ne en 1987 sous la plume de Larry Wall, linguiste et programmeur chez Unisys. Conçu initialement pour faciliter le traitement de rapports Unix, il est rapidement devenu un couteau suisse du scripting grâce à sa syntaxe flexible et sa puissance sur les expressions régulières. Aujourd'hui, Perl 5 reste actif dans les domaines de l'administration système, la bioinformatique et le traitement de texte massif.
Origines : Larry Wall et le rapport Unix¶
Larry Wall travaillait sur un système de gestion de bugs distribué lorsqu'il a réalisé que les outils existants (awk, sed, sh) etaient insuffisants pour ses besoins. Il a donc créé Perl, un langage qui emprunte la syntaxe de C, la philosophie de sed et awk, et l'expressivite du shell.
Le nom Perl signifie officiellement Practical Extraction and Report Language, bien que Larry Wall ait propose plusieurs backronyms humoristiques au fil des années.
Philosophies fondatrices¶
TMTOWTDI — "There's More Than One Way To Do It" — est le mantra de Perl. Le langage ne force pas un style unique ; il accepte plusieurs approches équivalentes pour résoudre un problème.
DWIM — "Do What I Mean" — désigne la tendance de Perl a interpréter le code selon l'intention probable du programmeur, plutôt que de forcer une écriture stricte.
TMTOWTDI en pratique
Ces deux philosophies expliquent pourquoi Perl est souvent utilisé pour les one-liners et les scripts rapides, mais aussi pour des projets complexes bien structures.
Perl 4 : la première maturité (1991)¶
Perl 4, publie en 1991, est la version documentee dans le celebre livre "Programming Perl" (le "Camel Book") de Larry Wall, Tom Christiansen et Randal Schwartz. Cette version consolide la syntaxe et introduit une documentation cohérente.
Perl 4 ne supportait pas les références, les objets ni les modules. Tout le code residait dans un seul espace de noms global. Malgre ces limitations, il est devenu extremement populaire pour les scripts CGI du Web naissant des années 1990.
Perl 5 : la revolution orientée objet (1994)¶
Perl 5, publie en octobre 1994, est une refonte majeure introduisant :
- Les références — permettant structures de données complexes (tableaux de tableaux, hashes imbriques)
- Le système de packages et namespaces — base de l'organisation modulaire
- L'orientation objet via
bless— objets implementes comme des références benies - Les modules — possibilite de réutiliser du code entre projets
# Exemple Perl 5 : classe simple avec bless
package Animal;
use strict;
use warnings;
# Constructeur
sub new {
my ($class, %args) = @_;
my $self = {
nom => $args{nom} // 'Inconnu',
espece => $args{espece} // 'Inconnue',
};
return bless $self, $class;
}
# Accesseurs
sub nom { return $_[0]->{nom} }
sub espece { return $_[0]->{espece} }
# Methode
sub parler {
my ($self) = @_;
printf "Je suis %s, un(e) %s\n", $self->nom, $self->espece;
}
package main;
my $chat = Animal->new(nom => 'Felix', espece => 'Chat');
$chat->parler(); # Je suis Felix, un(e) Chat
CPAN : la revolution du partage de code (1995)¶
Le Comprehensive Perl Archive Network (CPAN), lance en 1995, est l'un des écosystèmes de modules les plus importants de l'histoire de la programmation. Il centralise des dizaines de milliers de modules Perl maintenus par la communauté.
CPAN a servi de modèle a de nombreux gestionnaires de paquets modernes : PyPI (Python), npm (Node.js), RubyGems (Ruby) s'en sont directement inspirés.
Chiffres CPAN
En 2025, CPAN heberge plus de 200 000 distributions, soit environ 1 000 000 de modules, contribues par plus de 14 000 auteurs depuis 30 ans.
Chronologie des versions¶
| Version | Date | Événements majeurs |
|---|---|---|
| Perl 1.0 | 1987 | Première publication par Larry Wall |
| Perl 2.0 | 1988 | Expressions régulières ameliorees |
| Perl 3.0 | 1989 | Support des données binaires |
| Perl 4.0 | 1991 | "Programming Perl" (Camel Book), popularité CGI |
| Perl 5.0 | 1994 | Références, OOP, modules, namespaces |
| Perl 5.6 | 2000 | Support Unicode, notre version 64-bit |
| Perl 5.8 | 2002 | Améliorations Unicode, threads |
| Perl 5.10 | 2007 | say, given/when, named captures |
| Perl 5.14 | 2011 | use feature 'unicode_strings' |
| Perl 5.20 | 2014 | Signatures experimentales |
| Perl 5.26 | 2017 | Indented heredocs, @{^CAPTURE} |
| Perl 5.30 | 2019 | Regex et Unicode, deprecations |
| Perl 5.36 | 2022 | Signatures stables, use v5.36 active features |
| Perl 5.38 | 2023 | class builtin (OOP native), use v5.38 |
| Perl 5.40 | 2024 | Améliorations class, defer, try/catch natif |
Perl 5 moderne : use v5.36+¶
Depuis Perl 5.36, la pragma use v5.XX active automatiquement un ensemble de features modernes :
#!/usr/bin/perl
use v5.38; # Active strict, warnings, signatures stables, etc.
# Signatures de sous-routines (stables depuis 5.36)
sub addition($a, $b) {
return $a + $b;
}
# Nouveau systeme de classes (5.38+)
class Point {
field $x :param;
field $y :param;
method coords {
return ($x, $y);
}
method to_string {
return "($x, $y)";
}
}
my $p = Point->new(x => 3, y => 4);
say $p->to_string; # (3, 4)
say addition(10, 32); # 42
Compatibilité
Le mot-clé class est disponible depuis Perl 5.38. Pour les projets devant supporter des versions antérieures, utilisez Moose ou Moo pour l'OOP.
Raku : un successeur indépendant¶
Raku (anciennement Perl 6) est un projet démarré en 2000 pour reimaginer Perl depuis zero. Après 15 ans de développement, il a été publie en 2015 sous le nom Perl 6, puis renomme Raku en 2019 pour clarifier qu'il s'agit d'un langage distinct, non d'une nouvelle version de Perl 5.
| Critère | Perl 5 | Raku |
|---|---|---|
| Compatibilité | Perl 4/5 héritage | Incompatible avec Perl 5 |
| Typage | Dynamique | Graduel (optionnel) |
| Concurrence | Threads, forks | Natif (promises, channels) |
| Grammaires | Regex puissantes | Grammaires PEG intégrées |
| Maturité écosystème | Très mature (CPAN) | En développement |
| Usage production | Très repandu | Niche |
Raku est un langage intéressant academiquement, mais Perl 5 reste le choix pour la production en 2025.
Positionnement actuel de Perl¶
Perl occupe aujourd'hui des niches ou il excelle :
Administration système¶
Scripts de maintenance, parsing de logs, automatisation d'opérations Unix. Perl est preinstalle sur la plupart des systèmes Unix/Linux.
Bioinformatique¶
BioPerl est un des frameworks bioinformatiques les plus matures. De nombreux pipelines de traitement genomique historiques sont en Perl.
Traitement de texte et ETL¶
La puissance des expressions régulières de Perl et ses outils de manipulation de chaînes en font un choix naturel pour transformer des données textuelles.
Legacy web¶
De nombreuses applications web des années 2000 tournent encore en Perl (CGI, mod_perl). La maintenance de ces systèmes est un marche stable.
Perl aujourd'hui
Si vous decouvrez Perl en 2025, concentrez-vous sur Perl 5.36+ avec use v5.36, les modules modernes (Moose/Moo, Mojolicious, DBI) et cpanm/Carton pour la gestion de dépendances. Le Perl moderne n'a rien a voir avec les scripts CGI des années 1990.