SELFHTML

Généralités sur Perl

Page d'information: vue d'ensemble

vers le bas Possibilités d'appel de l'interpréteur Perl
vers le bas Première ligne d'un script Perl
vers le bas Noter des instructions
vers le bas Noter des blocs d'instructions
vers le bas Commentaires en Perl
vers le bas Règles pour l'attribution de noms
vers le bas Style de programmation propre

 vers le bas 

Possibilités d'appel de l'interpréteur Perl

Pour exécuter et tester vos propres scripts Perl, vous devez avoir Autre page d'information installé un interpréteur Perl. Pour mettre en oeuvre Perl comme langage pour les scripts CGI, il faut en outre Autre page d'information installer un serveur Web.

Pour les scripts CGI, le navigateur Web réclame un fichier du serveur Web par HTTP que le serveur Web reconnaît comme script exécutable. Pour savoir que le fichier réclamé par le navigateur est un script CGI exécutable, le serveur Web vérifie différents critères:

Ces facteurs font en sorte que si le navigateur appelle un fichier script dans le répertoire CGI, le serveur Web réagisse en conséquence et n'envoie pas purement et simplement le texte source du script au navigateur, mais au contraire appelle l'interpréteur Perl avec le script CGI.

Perl n'est toutefois pas uniquement prévu pour les scripts CGI. Les scripts Perl peuvent se charger d'innombrables tâches sur un ordinateur par exemple organiser des sauvegardes, analyser la charge de l'ordinateur, rechercher quelque chose dans les fichiers et remplacer par autre chose etc... Pour exécuter des scripts Perl, qui ne sont pas mis en œuvre comme scripts CGI, vous devez avoir accès à une console (shell) ou d'une ligne d'invite de commande sur l'ordinateur. Sur un ordinateur personnel local et sous MS Windows vous pouvez ouvrir une fenêtre DOS. Ensuite, vous pouvez appeler l'interpréteur Perl à partir de l'invite DOS. Pour des systèmes basés sur Unix, vous avez besoin d'un accès utilisateur. Après vous être annoncé, vous recevez un shell. à savoir une ligne de commande propre à l'utilisateur. De là, vous pouvez appeler l'interpréteur Perl, à condition que vous ayez les droits pour le faire. Si vous voulez exécuter des scripts Perl par la ligne d'invite de commande d'un ordinateur éloigné, donc par exemple sur un serveur public où vous avez loué de la place Web, alors il vous faut un accès Telnet ou SSH à cet ordinateur. Par ailleurs, il vous faut un programme telnet ou SSH (dans l'offre en ligne de l'index des liens de SELFHTML, vous trouverez des Page d'information: connexion exigée liens WWW à des programmes Telnet et SSH). Avec un tel programme, vous pouvez de loin, vous annoncer auprès d'un ordinateur et recevoir une console pour entrer des commandes. Demandez le cas échéant à votre fournisseur d'accès, si vous avez un accès Telnet ou SSH au serveur!

À partir de la ligne de commande, vous pouvez appeler l'interpréteur Perl avec un script Perl, à savoir un fichier avec du code Perl. De tels fichiers ont pour extension de fichier standard .pl. L'interpréteur Perl est normalement lancé simplement en entrant perl. Si vous avez par exemple un script Perl nommé hellomonde.pl, vous pouvez lancer ce script avec perl hellomonde.pl Le cas échéant, il vous faut appeler aussi bien l'interpréteur Perl que le script Perl avec le nom de chemin correct, sous DOS/Windows donc par exemple c:\www\bin\perl.exe c:\scripts\perl\hellomonde.pl, sous les systèmes basés sur Unix par exemple /usr/bin/perl /scripts/perl/hellomonde.pl.

Par ailleurs, il y a bon nombre d'options en plus du nom de fichier, pour l'appel de l'interpréteur Perl. Les options suivent immédiatement le nom du fichier programme et précèdent donc le nom du script Perl, donc par exemple perl -c test.pl. Vous pouvez aussi mettre plusieurs options à la suite. Notez simplement pour le faire un signe moins suivi de toutes les lettres d'options désirées par exemple perl -cwT test.pl

La liste suivante contient quelques options pour l'appel de l'interpréteur Perl.

Option Signification
-c le script Perl n'est pas exécuté mais seulement compilé dans une arborescence syntaxique interne à Perl et sa syntaxe est ainsi seulement contrôlée.
-d le script Perl est exécuté en mode débogage. Ce mode permet de tester systématiquement le script Perl. Dans le mode débogage, figurent de nombreuses commandes pour contrôler et vérifier le déroulement du script.
-h Si vous appelez Perl avec cette option sans mention d'un script, l'interpréteur Perl sort un récapitulatif de toutes les options disponibles.
-S Le script n'a besoin d'être mentionné que comme nom de fichier, sans mention du chemin. S'il se trouve dans un des répertoires qui sont nommés dans la variable PATH du système d'exploitation, l'interpréteur Perl trouvera également le script sans mention de chemin.
-T Le script est exécuté dans ce qu'on appelle le mode "tainted". Ce qui veut dire que toutes les données que le script Perl reçoit de l'extérieur sont marquées de façon particulières par l'interpréteur Perl et doivent subir un traitement particulier du script, pour des opérations critiques, avant de pouvoir être utilisées.
-v donne la version et l'état exact de l'interpréteur Perl.
-w fait en sorte que l'interpréteur Perl ne sorte pas seulement les messages d'erreur flagrantes pour les erreurs de syntaxe mais aussi des avertissements pour des erreurs possibles, pour les suites d'instructions dont la logique est douteuse, pour des affectations indéfinies etc...

 
 vers le hautvers le bas 

Première ligne d'un script Perl

Dans la première ligne d'un script Perl, ce qu'on appelle la ligne "Shebang", doit figurer une instruction qui mentionne où se trouve le fichier exécutable de l'interpréteur Perl.

Exemple d'un script Perl complet:

#!/usr/bin/perl
print "Hello monde\n";

Explication:

L'instruction concernant l'emplacement de l'interpréteur Perl sur l'ordinateur commence par les signes #!, qu'on appelle Shebang - suivis de la mention du chemin et du nom de l'interpréteur Perl. À partir de la deuxième ligne, vous pouvez noter des instructions dans le langage Perl - comme dans l'exemple la sortie des deux mots Hello monde.

L'instruction concernant l'emplacement de l'interpréteur Perl sur l'ordinateur est évaluée avant tout par les systèmes Unix et compatibles Unix et cela si le fichier Perl est fixé sur le mode "exécutable". Le fichier peut alors être appelé directement et démarre l'interpréteur Perl. Si vous travaillez sous d'autres environnements que Unix, notez simplement la ligne habituelle avec la mention de chemin habituelle (#!/usr/bin/perl) dans la première ligne de votre script Perl. Si le script n'était alors pas exécuté, notez le chemin exact du fichier exécutable de l'interpréteur Perl. Séparez les répertoires pour le faire toujours de simples barres obliques. Une mention typique sous DOS -/Windows est par exemple #!/programmes/perl/bin/perl.exe.

Attention:

Pour des serveurs Web qui soutiennent CGI, cela dépend du logiciel du serveur Web si la ligne pour l'emplacement de l'interpréteur Perl est lue. La mention du chemin de l'interpréteur Perl fait aussi partie entre temps des Autre page d'information réglages de base pour un serveur Web. Quand, avec le serveur Web en marche, un script Perl est exécuté par le protocole HTTP, le serveur Web appelle l'interpréteur Perl conformément à sa configuration.

Quand l'interpréteur Perl se trouve dans le chemin de recherche pour fichiers exécutables, par exemple sauvegardé dans la variable d'environnement PATH, alors il suffit de noter dans la première ligne du script Perl:
#!perl

Derrière la mention de chemin de l'interpréteur Perl, peut encore suivre, séparée par un espace, une option d'appel telle qu'elles sont décrites dans le tableau pour les vers le haut possibilités d'appel de l'interpréteur Perl. Vous pouvez ainsi noter par exemple:
#!/usr/bin/perl -w
Ce faisant, vous indiquez à l'interpréteur Perl de signaler aussi les avertissements en plus des erreurs. Cette option est volontiers recommandée par les programmeurs en Perl (voir aussi vers le bas Style de programmation propre).

 vers le hautvers le bas 

Noter des instructions

Perl est constitué comme d'autres langages de programmation d'une série contrôlée d'instructions. Ce sont des commandes évaluées par l'interpréteur Perl et transcrites en code machine, qui est exécutable sur l'ordinateur concerné.

Il existe des instructions simples et d'autres plus complexes.

Exemple d'un script Perl complet:

#!/usr/bin/perl

$nombre = 42;
$carre = $nombre * $nombre;
print "Le carré de ", $nombre, " = ", $carre, "\n";

Explication:

Une instruction en Perl est constituée par une commande qui se termine en principe par un point virgule ;.

Une instruction c'est par exemple:

 vers le hautvers le bas 

Noter des blocs d'instructions

Un bloc d'instructions est constitué de différentes vers le haut instructions, qui figurent à l'intérieur d'une instruction parente . Des blocs d'instructions peuvent ainsi figurer par exemple dans une Autre page d'information instruction conditionnelle ou dans une Autre page d'information boucle. Même toutes les instructions qui figurent dans un Autre page d'information sous-programme, forment un bloc d'instructions.

Exemple 1:

if($nombre > 1000) {
  $nombre = 0;
}

Exemple 2:

my $i = 1;
while($i <= 99) {
  print "Le carré de ", $i, " est ", $i * $i, "\n";
  $i = $i + 1;
}

Explication:

Un bloc d'instructions commence par une parenthèse accolade d'ouverture { et se termine par une parenthèse accolade de fermeture }.

Pour les instructions conditionnelles (comme dans l'exemple 1) ou pour les boucles (comme dans l'exemple 2) vous devez toujours noter de tels blocs d'instructions, même si il n'y a qu'une seule instruction à exécuter pour la condition ou la boucle.

Les blocs d'instructions peuvent également être imbriqués.

 vers le hautvers le bas 

Commentaires en Perl

Comme tout bon langage de programmation, Perl permet de noter des commentaires. Les commentaires ne sont pas interprétés comme du code et expliquent le script ou rendent le code plus lisible.

Exemple:

my $i = 1; # ici la variable $i est initialisée
#=========================================
# Suivent les carrés des nombres
# de 1 à 99
#=========================================
while($i <= 99) {
  print "Le carré de ", $i, " est ", $i * $i, "\n";
  $i = $i + 1;
}

Explication:

Les commentaires en Perl commencent par un signe dièse #. Tout ce qui figure derrière le signe dièse jusqu'à la fin de la ligne est ignoré par Perl. Si une ligne commence par le signe dièse, toute le ligne est un commentaire. Beaucoup de programmeurs en Perl utilisent également la technique du commentaire pour donner une structure esthétique à leurs scripts. L'exemple ci-dessus montre une telle construction optique avec le signe égal.

Attention

Outre le simple commentaire existe également la possibilité de marquer des passages plus importants du script comme documentation. Ces documentations peuvent être lues séparément avec le programme perldoc, qui fait partie de la "liste de colisage" de l'interpréteur Perl. Pour des scripts plus complexes, vous pouvez ainsi livrer tout de suite la documentation avec le script. En relation avec les modules est décrit dans la partie Autre page d'information lire les modules de documentation avec perldoc, l'aspect que revêtent de telles sections. Les modules qui y sont décrits fonctionnent dans tout script Perl.

 vers le hautvers le bas 

Règles pour l'attribution de noms

À de nombreuses occasions, vous devez attribuer dans Perl vous même des noms - par exemple pour les variables telles que les Autre page d'information Scalaires, Autre page d'information Arrays ou les Autre page d'information Hashes, ainsi que pour les Autre page d'information sous-programmes.

Exemple:

my $donnees = $ENV{'QUERY_STRING'};

Explication:

Dans l'exemple donnees est un nom attribué personnellement. Pour attribuer des noms, les règles suivantes sont à respecter:

Attribuez des noms évocateurs et qui vous signaleront, même six mois après avoir écrit le script, leur signification. Cela peut être des noms en français à condition de respecter les règles mentionnées.

Attention:

depuis la version Perl 5.6.0 les scripts Perl peuvent être également notés en Unicode. De la sorte il est possible par exemple d'utiliser des caractères avec accent dans les noms de variable. Les scripts Perl doivent alors être codés UTF-8. Dans un éditeur qui ne maîtrise pas cette notation, une variable $localité ressemblerait par exemple à: $localité

 vers le hautvers le bas 

Style de programmation propre

Il y a certaines choses qu'un script Perl écrit proprement doit contenir. Sans ces chose, la plupart des scripts Perl fonctionnent tout aussi bien, mais des instructions critiques (équivoques) dans le texte source ne sautent alors pas aux yeux et peuvent facilement conduire à des erreurs. Le petit script Perl qui suit contient quelques petites choses que les programmeurs en Perl recommandent pour une programmation propre.

Exemple d'un script CGI complet en Perl:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my $headline = "Un script propre!";

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Test</title></head><body>\n";
print "<h1>$headline</h1>\n";
print "<p>on ne renonce ici qu'au module CGI ;-)</p>\n";
print "</body></html>\n";

Explication:

Dans les mesures recommandées pour un programmation propre, on compte dans tous les cas l'utilisation de l'option d'appel -w dans la première ligne du script. L'interpréteur Perl sortira ainsi les avertissements sur les commandes douteuses avant d'exécuter le script. Certaines maladresses dans le code source sont ainsi reconnues sans engloutir du temps dans la recherche.

Dans le même esprit, l'instruction use strict; vise le même objectif. Elle obtient qu'un module spécial Autre page d'information module Pragma soit incorporé et fasse en sorte que l'interpréteur Perl n'accepte aucune construction douteuse avant qu'il n'exécute le script. Cela peut être par exemple des variables non définies. De cette façon également des erreurs, provenant d'une programmation distraite ou chaotique, peuvent être évitées qui passent inaperçues lors d'une interprétation tolérante du texte source.

L'instruction use CGI::Carp qw(fatalsToBrowser); est vivement recommandée par les programmeurs CGI. Elle incorpore un module spécial qui, lors d'une interruption du script en raison d'une erreur de syntaxe ou d'une instruction telle que Autre page d'information die, écrit l'origine de l'erreur directement sur la sortie standard, à savoir la transmet au navigateur appelant. De cette façon les programmeurs CGI s'épargnent lors de l'interruption du script, la recherche du message d'erreur dans le fichier Log d'erreurs - la plupart du temps très long - du serveur Web. Cette instruction ne sert cependant à rien si des erreurs apparaissent déjà, avant que l'interpréteur Perl puisse être exécuté, donc par exemple quand la première ligne du fichier indique un emplacement erroné pour l'interpréteur Perl.

Quand vous mentionnez use strict;, Perl vous impose de déclarer toutes vos variables avant la première utilisation (par exemple avec my). Dans l'exemple ci-dessus, c'est le cas pour l'initialisation de $headline. Ceci a l'avantage de provoquer des erreurs logiques si, dans le reste du script, vous n'avez pas écrit correctement un nom de variable. L'emploi de my obtient qu'une variable ne soit valable que dans le fichier ou dans le bloc d'instructions actuel. De plus amples détails à ce sujet dans la description de la fonction Autre page d'information my.

Comme vous pouvez le voir dans l'exemple ci-dessus, c'est avec un sourire rusé que le script avoue dans sa sortie à l'ordinateur appelant, qu'il n'utilise pas le Autre page d'information module CGI. En effet, vous devez, si vous voulez écrire des scripts CGI, vous pencher sur ce module et sa syntaxe. Le menace de devoir utiliser ce module a déjà pris des allures de contrainte maladive chez certains, pourtant pour de nombreux scripts CGI, l'utilisation de ce module CGI est en tout cas à recommander.

En général, l'accès à des mesures disponibles et éprouvées fait partie d'un style de programmation propre. Perl n'est pas seulement livré tout seul comme interpréteur Perl, mais avec toute une série de module de code tout prêts. qui facilitent beaucoup de tâches de programmation. Après que vous vous êtes familiarisé avec les éléments du langage et les fonctions intégrées de Perl, vous devez donc à tout prix vous pencher sur les Autre page d'information modules Perl.

Pour des scripts plus importants, vous devez répartir le code source en Autre page d'information sous-programmes. Avec cette technique, vous pouvez définir des blocs d'instructions qui se chargent de certaines tâches et qui peuvent être appelés à partir de différents emplacements dans le script. De plus, vous pouvez employer la techniques des sous-programmes pour diviser le cours du script en procédures partielles et n'exécuter que certaines parties du script.

Depuis la version 5 de l'interpréteur, Perl permet également la Autre page d'information programmation orientée sur l'objet. C'est certes un peu difficile à comprendre de prime abord pour des néophytes, cependant quand on s'y habitue, des applications plus importantes en Perl sont en fin de compte plus simples à programmer, et le code apparaît sensiblement plus lisible.

Finalement les recommandations suivantes font partie d'une "programmation propre":

 vers le haut
page suivante Autre page d'information Instructions CGI nécessaires en Perl
page précédente Autre page d'information Formulaires HTML et CGI
 

© 2001 Stefan Münz / © 2003 Traduction Adresse électronique Serge François, 13405@free.fr
Adresse électronique selfhtml@fr.selfhtml.org