SELFHTML

Scalaires (Variables)

Page d'information: vue d'ensemble

vers le bas déclarer des scalaires et affecter des valeurs
vers le bas Transformation du type de scalaires
vers le bas Fonctions et opérations pour la manipulation de scalaires

 vers le bas 

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.

Exemple d'un script CGI complet:

#!/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";

Explication:

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 Autre page d'information 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 (Autre page d'information 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'Autre page d'information 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 Autre page d'information 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 Autre page d'information 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'Autre page d'information 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.

 vers le hautvers le bas 

Transformation du type de scalaires

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.

Exemple d'un script CGI complet:

#!/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";

Explication:

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 Autre page d'information 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.

Attention:

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).

 vers le hautvers le bas 

Fonctions et opérations pour la manipulation de scalaires

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 Autre page d'information fonctions pour chaînes de caractères ou les Autre page d'information Fonctions pour les calculs. En plus de cela, les scalaires sont également souvent nécessaires et modifiées en relation avec les Autre page d'information 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'Autre page d'information opérateurs.

 vers le haut
page suivante Autre page d'information Listes ou Arrays (Variables)
page précédente Autre page d'information Instructions CGI nécessaires en Perl
 

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