Les bases de Perl : un cours intensif pour les développeurs CGI

8

Perl est un langage de script. C’est vieux. C’est respecté. C’est partout. Si vous avez déjà vu un script CGI exécutant une application Web de base à la fin des années 90, vous parliez de Perl.

Cela fait bien deux choses. Premièrement, il remplace les fichiers batch DOS et les scripts shell C. Deuxièmement, il alimente les serveurs Web. C’est le contexte qui compte maintenant.

La bonne nouvelle ? Le code source est gratuit. Les développeurs le donnent. Vous pouvez télécharger des milliers de scripts. Vous pouvez les étudier. Vous pouvez les casser.

La mauvaise nouvelle ? Une grande partie de ce code est illisible. Perl encourage un style si énigmatique qu’il frise l’obscurcissement. Si vous ne savez pas ce que vous faites, vous ne saurez pas ce que vous lisez.

Ce guide suppose que vous codez déjà. Si vous connaissez C, vous êtes en avance. Sinon, commencez ici. Nous évitons la philosophie. Nous arrivons à la syntaxe.

Faire fonctionner l’interprète

Vous avez besoin de l’interpréteur Perl.

Si vous êtes sous UNIX, c’est probablement là. 99,99 % de chances. Vérifiez votre terminal.

Si vous êtes sous Windows ou Mac, rendez-vous sur le site officiel. Téléchargez la dernière version. Installez-le. Perl est gratuit. C’est open source. Il existe depuis 1987. Ne réfléchissez pas trop à l’installation.

Une fois installé, recherchez le répertoire DOCS. Il est livré avec le colis. Scannez-le. Ne lisez pas encore tous les mots. C’est dense. C’est sec. Mais c’est exact. Vous en aurez besoin plus tard, lorsque les bases n’auront plus de sens.

Votre premier script

Définissez votre chemin. Incluez l’exécutable Perl. Ouvrez un éditeur de texte. Créez un fichier nommé « test1.pl ».

Tapez ceci :

Enregistrez-le. Ouvrez votre invite de commande. Tapez :

Vous verrez « Hello World ! » sur l’écran. C’est tout à fait normal. C’est la sortie standard.

Sous UNIX, vous pouvez ajouter #!/usr/bin/perl à la première ligne. Ensuite, vous pouvez simplement taper « ./test1.pl ». Nettoyeur. Plus rapide.

La commande print sort sur stdout. Le \n est un saut de ligne. Simple.

Essayez ceci :

Deux lignes. Une commande.

Pourquoi est-ce que ça a marché ? À cause des guillemets doubles. En Perl, les guillemets doubles déclenchent l’interprétation citant. Il analyse les caractères d’échappement.

Utiliser des guillemets simples ?

Vous voyez maintenant le texte littéral. \n reste comme \n. Aucune interprétation. Pas de magie.

Il y a aussi le caractère backquote : `.

Cela exécute une commande du système d’exploitation. La sortie s’imprime à l’écran. Sous Windows, cmd /c est nécessaire. dir n’est pas un exécutable. C’est une commande intégrée de l’interpréteur de commandes.

Si vous essayez « print ‘dir’; » sous Windows NT, cela échoue. Vous avez besoin du shell wrapper.

Notez le caractère /. Il est utilisé pour les expressions régulières. Vous le verrez partout.

print prend des virgules comme séparateurs :

Il faut également des périodes comme opérateurs de concaténation :

Le point rejoint les chaînes. La virgule sépare les arguments.

Les programmeurs C aimeront printf. Cela fonctionne exactement comme C.

Variables et types de données

Les variables Perl n’ont pas besoin de déclaration. Ils existent au moment où vous les attribuez.

Utilisez toujours un symbole $.

Les guillemets doubles interprètent les échappements. Les guillemets simples ne le font pas.

Les chiffres fonctionnent aussi.

\t est un onglet. Perl s’en charge.

La concaténation de chaînes utilise le point :

La sténographie existe. .= fonctionne comme +=.

Tableaux

Les tableaux commencent par @.

Les tableaux sont indexés à zéro. Comme C. Comme Java. Comme Python.

La notation $#a vous donne l’indice le plus élevé. Pas le décompte. L’indice. Donc, si vous avez trois éléments, $#a vaut 2.

Hachages

Les hachages commencent par %. Ce sont des paires clé-valeur.

« bar » est lié à « chien ». « miaou » à « chat ».

Il existe une syntaxe plus propre. L’opérateur =>.

Il cite le côté gauche. Cela fait office de virgule. Cela rend le code lisible. Utilisez-le.

Perl est simple une fois que vous arrêtez de lutter contre la syntaxe. Les bases sont simples. Les choses avancées sont celles où les choses deviennent bizarres. Restez fidèle au noyau. Maîtrisez les variables. Maîtrisez les règles de cotation.

Le reste n’est que des modèles. Et les mauvaises habitudes.

Si vous avez passé du temps en C, la syntaxe de Perl vous semblera familière. Il emprunte beaucoup à cette lignée, mais il relâche l’emprise de la rigueur.

Faites une boucle for. Cela ressemble exactement à ce à quoi vous vous attendez :

Vous pouvez également vous appuyer sur les instructions while pour des itérations plus simples. Ici, la variable s’incrémente à l’intérieur du bloc :

Les portes logiques suivent les mêmes règles que C. Utilisez && pour “et”, || pour “ou” et ! pour “non”.

Remarque : Perl propose un deuxième ensemble d’opérateurs de comparaison pour les chaînes. Alors que == vérifie l’égalité numérique, eq vérifie l’égalité des chaînes.

Les opérateurs numériques restent standards :
== (égal)
!= (pas égal)
* *, <=, , *>=

Mais si vous avez affaire à du texte, vous préférerez peut-être les alternatives basées sur des mots :
eq (égal)
ne (pas égal)
lt (moins de)
le (inférieur ou égal)
gt (supérieur à)
ge (supérieur ou égal)

Itération dans les tableaux

La boucle sur une collection en Perl est propre grâce à foreach. Il attribue chaque élément d’un tableau à une variable scalaire un par un.

Ici, $b prend la valeur de « chien », puis de « chat », puis de « anguille ». La boucle se termine lorsque le tableau @a est épuisé.

La règle du corset

Il existe une règle de syntaxe non négociable en Perl : les accolades.

Vous devez utiliser { et } pour encapsuler les blocs de code, même si le bloc ne contient qu’une seule ligne.

Sautez les accolades et le compilateur se plaindra.

Écriture de sous-programmes

Les fonctions en Perl sont définies à l’aide du mot-clé sub.

Lorsque vous appelez un sous-programme, tous les arguments qui lui sont transmis sont placés dans un tableau spécial appelé @_.

La variable $#_ renvoie l’index le plus élevé du tableau @_. Étant donné que les tableaux sont indexés à zéro, cela vous donne effectivement le nombre de paramètres moins un.

C’est un peu bête, mais une fois qu’on s’y est habitué, c’est efficace.

Portée des variables et valeurs de retour

Pour éviter de polluer l’espace de noms global à l’intérieur d’une fonction, déclarez des variables locales à l’aide du mot-clé local.

Vous pouvez également appeler explicitement une fonction en utilisant le symbole &.

Techniquement, & n’est requis qu’en cas d’ambiguïté dans l’analyseur. Mais de nombreux développeurs l’utilisent par habitude pour être explicites.

Pour renvoyer un résultat à l’appelant, utilisez le mot-clé return.

Entrée et sortie

La lecture à partir du flux d’entrée standard (STDIN ) est simple. L’opérateur de support angulaire lit une ligne à la fois.

Cela suppose que l’entrée est un entier valide. Si l’utilisateur tape des ordures, la logique se brise.

Pour la saisie d’un seul caractère, utilisez getc :

Ou utilisez la fonction read, qui spécifie la longueur de l’entrée à capturer.

Le « 1 » à la fin indique qu’un seul caractère est lu.

Environnement et données de ligne de commande

Perl expose les données système via des variables globales.

Le hachage %ENV contient toutes les variables d’environnement. N’oubliez pas que les clés doivent être en majuscules.

Si vous avez besoin d’accéder aux arguments de ligne de commande, consultez le tableau @ARGV.

  • $ARGV[0] est le premier argument.
  • $ARGV[1] est le deuxième.
  • $#ARGV vous donne l’index du dernier argument (compte moins un).

Cela facilite la création de scripts acceptant des entrées dynamiques sans valeurs codées en dur.

Perl est-il toujours pertinent ?

C’est une bonne question. Les programmeurs utilisent-ils encore Perl ? Oui.

Perl est-il encore utilisé en 2024 ? Oui, même si son rôle a changé. C’est un langage dynamique, interprété et de haut niveau. Il ne domine pas les nouveaux projets Web nouveaux comme le feraient Python ou Node.js.

Cependant, Perl reste une référence en matière d’administration système et de maintenance héritée. Il excelle dans le traitement de texte et la création de scripts rapides