Description

Créé par Larry Wall, Perl était d'abord un langage de scripting qui a débuté comme une amélioration du shell Unix et de awk. Au fil du temps, perl est devenu un langage de programmation complet. perl est fréquemment utilisé pour manipuler des fichiers de données et en extraire de l'information utile. Une des forces de perl est l'immense librairie de modules qui sont disponibles via CPAN. Notez qu'il existe même un module spécial en Perl (aussi appelé CPAN) qui permet d'installer plus facilement de nouveaux modules (qu'en faisant le classique: Perl Makefile.pl; make; make install).

Perl est surtout pratique soit pour faire du scripting (comme pour de l'administration système), soit pour du prototypage rapide. Un des avantages de Perl est son expressivité syntaxique (pas de typage statique, casting implicite en fonction des opérateurs appliqués), qui se fait au détriment de l'efficacité. La garbage collection de Perl est assez mauvaise (en fonction du système il gérera différemment la mémoire), donc si l'espace mémoire est critique il n'est pas recommandé. Il est conseillé d'utiliser les options de vérification lors de vos premiers scripts afin d'éviter de faire des bêtises, ainsi que pour être certain que ce que vous avez laissé implicite dans votre code est interprété par Perl comme vous le pensiez.

Que vous soyez un programmeur chevronné ou débutant, le livre "The practice of programming" de Kernighan et Pike (disponible en bibliothèque) est une excellente lecture pour des règles de bonne pratique en programmation, quel que soit le langage utilisé. Perl étant très expressif, les risques sont d'autant plus élevés qu'un bout de code ne fasse pas ce que vous croyez qu'il fait...

Exemples

Traditionnel "Hello World":

 #! /usr/bin/perl
 print("Hello World\n");

Attention, Perl n'oblige pas la déclaration des variables. Toutefois, pour éviter des bugs pénibles à retrouver, si vous pouvez utiliser le package strict qui vous oblige alors à déclarer les variables. L'exemple suivant est un petit programme qui prend deux entiers en paramètres et les additionnes.

 #! /usr/bin/perl
 #
 use strict;
 use warnings;

 my $var1; #déclaration d'une variable
 my $var2;
 my $var3;

 $var1 = $ARGV[0]; #récup. premier param.
 $var2 = $ARGV[1]; #récup. deuxième param.
 $var3 = $var1 + $var2;
 print("Le résultat est ", $var3, "\n");

On peut voir dans l'exemple ci-dessus que les scalaires sont précédés du symbole '$'. La déclaration d'un tableau est très simple:

 my @mon_tableau;

La déclaration d'un table de haschage est se fait avec le symbole '%':

 my %ma_table_haschage;

Voici un petit exemple d'utilisation de ces deux structures:

 #! /usr/bin/perl

 use strict;
 use warnings;

 my @tab = (1, 2, 3);
 my %hash;

 print("Le 2e el du tableau est: ", $tab[1], "\n");
 $hash{"poire"} = 10;
 $hash{"pomme"} = 3;
 print("Le prix d'une pomme est: ", $hash{"pomme"}, "\n");

Informations complémentaires

Livre introductif

  • Le livre Learning perl (disponible en bibliothèque) contient la base sur la syntaxe et les fonctions usuelles de Perl. Idéal pour apprendre Perl rapidement, il est concis et suffisamment complet que pour ensuite se débrouiller en cherchant sur le web. Pour des utilisations avancées de Perl, il est assez rare que la solution à votre problème ne se trouve pas déjà sur le web, en cherchant un peu vous trouverez probablement la solution à votre problème.

Livres plus avancés en Perl:

  • Mastering algorithms with Perl (pas disponible à la bibliothèque) contient des recettes de cuisine pour des problèmes aussi variés que les graphes, la cryptographie, la géométrie, etc...Ce livre explique comment utiliser Perl intelligemment pour résoudre des problèmes pour lesquels on pourrait se dire que Perl n'est pas approprié...
  • Advanced Perl Programming (disponible en bibliothèque) est une référence plus systématique que le livre précédent sur des utilisations spécifiques de Perl, comme l'orienté-objet, la programmation réseau, ou web. Ce livre contient un chapitre très intéressant sur la gestion interne des variables en Perl pour les curieux du fonctionnement interne de Perl...

Trucs et astuces