Aller au contenu

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.