Perl, une courte introduction au langage

Jean-Baptiste Blache
5 min readMay 13, 2018

--

Que ce soit en administration système, manipulation de textes, programmation réseau, bases de données, interfaces graphiques et plus encore, Perl assure. Ses nombreuses bibliothèques le rendent vite irremplaçable aux yeux de ceux qui en acquièrent la maîtrise. Encore faut-il l’avoir. Voici donc quelques notions basique en Perl et nécessaires pour bien comprendre la suite si vous vous lancez dans cette aventure. Néanmoins, vous serez sans doute un peu déçu de ne pas faire de dingueries à la fin de cette story, mais patience : qui veut aller loin ménage sa monture.

Fort heureusement pour nous, la prise en main de Perl est facilitée par de nombreux rapprochements possibles avec le C ou le shell. Perl est un langage de haut niveau, qui a la prétention de combiner les avantages de plusieurs autres langages. Première facilité, il gère lui-même la mémoire (ce qui veut dire pas d’erreurs de segmentation). De plus, les tableaux et les listes sont natifs, ils sont intégrés à la grammaire même du langage.

Si cela ne vous suffisez pas , souvenez-vous que l’une des devises de Perl est : there is more than one way to do it (il y a plus d’une façon de le faire mais vous deviez l’avoir compris).

1) Exécuter un programme

Comme vous le savez probablement, il existe deux types de langages, les langages compilés (par exemple le C et le C++) et les langages interprétés (le shell). Et bien sachez que pearl est un langage compilé à la volée(comme Python ou Java). L’interpréteur (appelé par perl) compile le code, le réduisant à une représentation intermédiaire optimisable appelée bytecode. Ce dernier est ensuite directement exécutée. Rapide, efficace et flex.

On peut executer un programme Perl de trois manières :

  • en rentrant du code dans un terminal, par exemple pour un shell :
>perl -e 'print("Perl est génial !\n");'
  • ecrire un fichier test.pl, contenant le print précédent et lancer la commande suivante :
>perl test.pl
  • créer un fichier test2.pl :
#!/usr/bin/perl
print("Perl est génial !\n");

pour ensuite taper :

>chmod +x test2.pl
>./test2.pl

La première ligne est le shebang, que tous les codeurs shell connaisent bien. Cette ligne (qui doit toujours être la première du fichier) indique au système d’exploitation le chemin de l’exécutable à lancer pour interpréter ce fichier. Le premier caractère doit être un croisillon(#), ce qui a pour effet la création d’un commentaire par l’interpréteur (comme en python). Ensuite un point d’exclamation. Petit point syntaxe pendant que nous y sommes, en Perl, l’indentation est libre et ne change pas le comportement du programme. De plus le point-virgule vient conclure une instruction.

2) Variables

Voyons maintenant comment déclarer des variables, ce qui, pour le coup, diffère du C. Par exemple, pour déclarer une chaîne de caractère :

my $nom = "Perl";

Décomposons cette instruction, la première nouveauté et ce mot-clé my. Il sert à déclarer une variable. Ensuite, les noms de variables commencent tous par le dollar $ que l’on appelle « sigil ».

Plutôt simple ! Perl décompose ses variables en trois catégories, chacune utilisant un préfixe pour les classer. Nous avons les scalaires avec un $, comme vu précédemment, les tableaux, avec @ et les tables de hachage avec %. Pour résumer, voila comment nous déclarerions les trois :

my $ville = 'Lyon' ;my @animaux = 'chat', 'chient', 'rhinocéros';my %capitales = ('Angleterre','Londres','France','Paris');

Pour rester bref, une table de hachage est ensemble de paires clef/valeur.

Cependant, que pouvons-nous mettre dans nos variables ? Et bien Perl permet au variables de contenir des valeurs de tout type. On appelle ce style de programmation « typage dynamique ».

3) Structures conditionnelles et boucles

Perl possède de nombreuses structures qui viennent complémenter celles que vous pouviez déjà trouver en C. On peut donc citer :

  • if

if (expression a evaluer) { instruction(s) a executer si l’expression est vraie } else { instructions a executer si l’expression est fausse}

  • unless

fonctionne comme un nif, si l’expression est fausse alors faire.

  • while/until

Effectuera l’instruction tant que/jusqu’à ce que la condition soit vérifiée

  • for

for ($compteur=0; $compteur < $nombre_itération; $compteur++) { … }

  • foreach

foreach $Couleur (’jaune’,’vert’,’bleu’) { … } La variable couleur prend successivement les valeurs jaune, vert et bleu.

4) Les fonctions

Perl donne la possibilité de créer des fonctions prenant (ou pas) des arguments et qui rendent (ou pas) une valeur de retour. Elles sont déclarées avec le mot clé sub suivi d’un identificateur et d’un bloc qui va contenir le code de la fonction. Elles peuvent ensuite être appelées par leur nom. Regardez l’exemple ci-dessous :

sub bonjour {say  "Bonjour lecteur";}bonjour;

Programmation fonctionnelle

Les fonctions/routines sont des entités de première classe :

  • elles peuvent être passées comme un argument ;
  • elles peuvent être renvoyées par une fonction ;
  • on peut les affecter à une variable.

La fonction map va permettre de vérifier ce concept, elle va accepter une autre fonction en argument.

My @tableau = <1 2 3 4> ;sub carré($x) {$x ** 2}say map(&carré,@tableau);

Script qui nous donnera en sortie : (1 4 9 16)

Explication : Nous avons défini une routine carré, qui met à la puissance 2 l’argument. Puis nous avons utilisé map, fonction d’ordre supérieure qui a pris en paramètre une fonction et un tableau. Notez que le préfixe & est utilisé lorsqu’une fonction est passée comme argument.

5) Conclusion

Tout cela vous a normalement permis de vous initier au langage Perl. Ce ne sont ici que ses éléments les plus basiques. Si le cœur vous en dit n’hésitez pas à aller voir les autres tutoriels en référence ci-dessous. Perl est un langage très polyvalent qui permet de faciliter les tâches du quotidien. Il serait judicieux de l’ajouter à son arsenal. En effet la seconde devise de Perl, qui va conclure cette story est : « Easy things should stay easy, hard things should get easier, and impossible things should get hard » (Les choses faciles doivent rester faciles, les choses difficiles devraient devenir plus faciles, et les choses impossibles devraient devenir difficiles).

Références

https://naoumhankache.developpez.com/tutoriels/perl6/perl6intro/

https://perso.univ-rennes1.fr/francois.dagorn/perl/perl.pdf

https://perl.developpez.com/cours/#TutorielsDebuter

http://sdz.tdct.org/sdz/apprenez-a-programmer-en-perl.html

--

--

Jean-Baptiste Blache

“My expectations were reduced to zero when I was 21. Everything since then has been a bonus.” S. Hawking