SELFHTML/Aides à la navigation CGI/Perl Éléments de langage Perl |
Scalaires (Variables) | |
déclarer des scalaires et affecter des valeurs |
|
En Perl une variable scalaire simple qui peut sauvegarder un nombre ou une chaîne de caractères s'appelle scalaire.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); my $nom = "Mathusalem"; my $age = 625; my $nom_2 = "Pascale Paradis"; my $jeune_age = sqrt($age); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Testausgabe</title>\n"; print "</head><body>\n"; print "$nom est un vieil homme très vieux. Il a $age ans<br>\n"; print "$nom_2 est par contre une jeune pousse. Elle a $jeune_age ans.<br>\n"; print "</body></html>\n"; |
Dans l'exemple sont déclarées quatre scalaires (d'abord nommées dans le script et introduites): $nom
, $age
, $nom_2
et $jeune_age
. Les quatre instructions sont définies ici avec my
. La déclaration est indispensable parce que plus haut dans le script est notée l'instruction use strict;
. Si elle manquait, alors il serait permis d'utiliser les variables également sans déclaration. Il est cependant préférable, en particulier pour des scripts plus grands, de s'habituer tout de suite à un style propre et de déclarer toutes les variables. Cette manière d'agir peut souvent faciliter de façon significative la recherche d'erreurs dans le script.
Une scalaire commence toujours par le signe Dollar $
. Le signe dollar doit toujours être mentionné quand la variable est utilisée. Derrière le signe dollar suit un nom choisi librement mais qui doit toute fois satisfaire aux Règles pour l'attribution de noms.
Les scalaires sauvegardent des valeurs. Les valeurs leur sont affectées. Les déclaration des quatre scalaires dans l'exemple de script sont des affectations typiques. L'affectation est faite par le signe égal =
. À sa gauche figure le nom de la variable, à sa droite la valeur qui est affectée. Il peut s'agir d'une valeur notée directement, donc par exemple "Mathusalem"
ou 625
. Il peut s'agir aussi d'une expression qui calcule d'abord la valeur. Pour la déclaration de $jeune_age
dans l'exemple, une fonction Perl est appelée qui calcule la racine carrée d'un nombre et retourne la valeur obtenue ( sqrt). Cette valeur retournée est affectée à la scalaire $jeune_age
.
Pour la déclaration d'une scalaire vous pouvez - comme dans les exemples ci-dessus - affecter une valeur d'initialisation (valeur de départ). Il est également possible de déclarer une scalaire sans lui affecter de valeur. Alors omettez simplement l'affectation de valeur et notez une instruction qui comprend simplement le nom de la scalaire et le point virgule qui clôture celle-ci (par exemple my $nom;
). Quand une scalaire est déclarée de cette façon, elle a la valeur "indéfini" (undef). Quand vous utilisez l' option w l'interpréteur Perl sort un avertissement quand vous voulez continuer à travailler avec une telle valeur indéfinie.
Vous pouvez attribuer à des scalaires des valeurs numériques, des chaînes de caractères (Strings) et des Références ou pointeurs . C'est vous qui décidez si une scalaire est un nombre ou une chaîne de caractères, en affectant une valeur à la scalaire ou en l'utilisant dans une instruction. Une chaîne de caractères doit ici figurer entre guillemets. Cela peut être aussi bien des guillemets que des apostrophes (pour la différence, se reporter aux Règles pour la notation de chaînes de caractères). Dans l'exemple ci-dessus, les scalaires $nom
et $nom_2
sauvegardent des chaînes de caractères tandis que les scalaires $age
et $jeune_age
sauvegardent des nombres.
Le script d'exemple ci-dessus envoie en tant que script CGI l' entête HTTP et le code HTML au navigateur. Pour ce faire, il utilise les scalaires dans les instructions print
aux endroits nécessaires. Dans le code HTML qui arrive au navigateur, apparaît à l'endroit correspondant la valeur actuelle de la scalaire.
Les scalaires peuvent tout aussi bien sauvegarder des nombres que des chaînes de caractères. Même une seule et même scalaire peut, dans le déroulement du script sauvegarder tantôt un nombre, tantôt une chaîne de caractères. Le changement de type qui dans des langages de programmation classiques est soit pas du tout possible soit doit être effectué avec une instruction distincte, se fait automatiquement en Perl.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); my $valeur = 123456; my $valeur_partielle = substr($valeur,1,3); $valeur = $valeur_partielle; print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>sortie du test</title>\n"; print "</head><body>\n"; print "<var>valeur_partielle</var> est: <b>$valeur_partielle</b><br>\n"; print "et <var>valeur</var> est: <b>$valeur</b><br>\n"; print "</body></html>\n"; |
Dans l'exemple une scalaire $valeur
est déclarée et se voit affecter un nombre. Ensuite une autre scalaire $valeur_partielle
est déclarée. À cette scalaire est affectée la valeur retournée par une fonction Perl, à savoir la fonction substr. Celle-ci est une fonction de chaînes de caractères typiques. Elle extrait une partie d'une chaîne de caractères. Maintenant les nombres sont sauvegardés différemment que les chaînes de caractères dans l'ordinateur. C'est la raison pour laquelle dans la plupart des autres langages de programmation, ce serait une faute grave de tenter de transmettre un nombre à une telle fonction de chaîne de caractères. Cela ne pose toutefois aucun problème en Perl. Dans l'exemple est transmise à la fonction simplement $valeur
, donc la scalaire dans laquelle est sauvegardé à ce moment un nombre. Perl considère le nombre automatiquement comme chaîne de caractères - ce qui veut dire suite de chiffres, signe décimal etc... - quand il constate l'intention d'y voir appliquer une fonction de chaîne de caractères.
Dans l'exemple, la fonction substr
extraît les signes 2 à 4 de la chaîne de caractères (la position de départ et la longueur sont transmises, mais en Perl le comptage pour ce genre de choses se fait toujours à partir de 0 et non pas de 1, raison pour laquelle 1
et 3
sont transmis). Si on interprète le nombre 123456
comme chaîne de caractères, c'est donc tout simplement 234
qui est extrait. Cette valeur est également retournée par la fonction substr
dans l'appel ci-dessus - mais en tant que chaîne de caractères. Car substr
retourne toujours et en tous cas une chaîne de caractères. Dans l'instruction de l'exemple qui suit $valeur = $valeur_partielle
est mise à l'épreuve une nouvelle fois cette capacité de Perl à changer automatiquement le type. Car avec cette instruction, $valeur
, dans laquelle était sauvegardé jusqu'ici un nombre, reçoit subitement une chaîne de caractères, à savoir la valeur de $valeur_partielle
, qui provient de la valeur retournée par substr
et qui est une chaîne de caractères. Si vous connaissez d'autres langages de programmation, vous mesurerez ici quelles libertés vous avez en Perl pour la manipulation de variables.
L'exemple ci-dessus envoie le code HTML au navigateur appelant et sort les valeurs actuelles des scalaires.
L'interpréteur Perl fait tout son possible pour traiter les valeurs de vos variables. Cela veut dire que, si vous exécutez par exemple des opérations numériques avec une chaîne de caractères (par exemple 3 + "texte"
), cette chaîne de caractères est convertie en une valeur numérique, à savoir 0. C'est exactement ainsi que vous pouvez relier ensemble une chaîne de caractères et une référence. L'instruction print "Text".$ref;
(dans laquelle $ref
contient une référence) pourrait donc par exemple créer la sortie TextSCALAR(0x1765158)
.
Les scalaires sont des variables. On les utilise pour avoir un endroit où sauvegarder les valeurs qui peuvent être modifiées au cours du script. Les scalaires modifient les valeurs qu'elles sauvegardent en recevant une nouvelle affectation de valeur. Ces valeurs affectées sont toutefois souvent des valeurs qui ne sont pas directes, mais des valeurs retournées par des fonctions, qui calculent ou effectuent quelque chose. Dans les exemples plus haut, deux de ces fonctions on déjà été employées: la fonction sqrt
pour calculer une racine carrée, et la fonction substr
pour rechercher une partie d'une chaîne de caractères. Perl offre beaucoup de ces fonctions. Des fonctions typiques avec lesquelles vous pouvez influencer la valeur de scalaires, sont par exemple les fonctions pour chaînes de caractères ou les Fonctions pour les calculs. En plus de cela, les scalaires sont également souvent nécessaires et modifiées en relation avec les boucles. Vous pouvez par exemple également relier des chaînes de caractères, et vous pouvez calculer avec des nombres. À cette fin, vous avez besoin d' opérateurs.
Listes ou Arrays (Variables) | |
Instructions CGI nécessaires en Perl | |
SELFHTML/Aides à la navigation CGI/Perl Éléments de langage Perl |
© 2001 Stefan Münz / © 2003 Traduction Serge François, 13405@free.fr
selfhtml@fr.selfhtml.org