SELFHTML

Opérateurs

Page d'information: vue d'ensemble

vers le bas Opérateurs d'affectation
vers le bas Opérateurs de comparaison
vers le bas Opérateurs de calcul
vers le bas Opérateurs logiques
vers le bas Opérateurs de bits
vers le bas Opérateur pour concaténer des chaînes de caractères
vers le bas Opérateurs de répétition de chaînes de caractères
vers le bas Ordre de priorité des opérateurs

 vers le bas 

Opérateurs d'affectation

Vous pouvez par exemple affecter une valeur à une Autre page d'information scalaire. Pour cela, l'opérateur d'affectation est le signe égal

Exemple:

my $Nom = "Serge François";
my $Code = 4711;

Explication:

Une valeur est affectée aux variables respectives au moyen du signe égal =.

 vers le hautvers le bas 

Opérateurs de comparaison

Vous avez besoin d'opérateurs de comparaison quand vous voulez comparez deux valeurs, par exemple le contenu actuel d'une scalaire avec une constante..

Exemple:

if($sens_de_la_vie  == 42)
 { print "Vous avez compris la vie!\n" };
if($sens_de_la_vie  != 42)
 { print "Vous n'avez rien compris à la vie!\n" };
if($sens_de_la_vie  > 42)
 { print "Ça va pas?\n" };
if($sens_de_la_vie  < 42)
 { print "Vous ne faites pas le poids pour la vie!\n" };
if($age >= 18)
 { print "Vous avez même le droit de voir cette bêtise-ci!\n" };
if($age <= 17)
 { print "Vous n'avez même pas l'âge pour pour cette bêtise!\n" };

if($mot_de_passe eq "Hexasex")
 { print "Vous avez accès au sexe en dimension hexadécimale!\n" };
if($mot_de_passe ne "Hexasex")
 { print "Contentez vous de sexe en une dimension chez vous au lit!\n" };
if($nom gt "Y")
 { print "Vous êtes aussi toujours le dernier!\n" };
if($nom lt "B")
 { print "Vous êtes aussi toujours le premier!\n" };
if($nom ge "ZZ Top")
 { print "Votre groupe favori est ZZ Top ou quelque chose de pervers!\n" };
if($nom le "Abba")
 { print "Votre groupe favori est Abba ou quelque chose de pervers!\n" };

if($age =~ /[^0-9]/)
 { print "Ce n'est pas du tout un chiffre!\n" };

Explication:

Perl différencie les opérateurs de comparaison pour les nombres et pour les chaînes de caractères. En outre, il existe un opérateur spécial pour les comparaisons avec des Autre page d'information  expressions régulières.

Pour demander si deux nombres sont égaux, notez deux signes égal == à la suite.
Pour demander si deux nombres sont différents, notez entre les deux valeurs les signes !=.
Pour demander si un nombre est plus grand ou égal à un autre notez les signes >=.
Pour demander si un nombre est dans tous les cas plus grand qu'un autre notez le signe >.
Pour demander si un nombre est plus petit ou égal à un autre notez les signes <=.
Pour demander si un nombre est dans tous les cas plus petit qu'un autre notez le signe <.

Pour demander si deux chaînes de caractères sont identiques notez eq entre les deux valeurs à comparer (eq = equal = égal).
Pour demander si deux chaînes de caractères sont différentes, notez ne entre les deux valeurs à comparer (ne = not equal = différent de ).
Pour demander si une première chaîne de caractères est placée plus loin dans l'ordre alphabétique qu'une deuxième, notez gt entre les deux valeurs à comparer d(gt = greater than = plus grand que).
Pour demander si une première chaîne de caractères est placée plus avant dans l'ordre alphabétique qu'une deuxième, notez lt entre les deux valeurs à comparer (lt = less than = plus petit que)
. Pour demander si une première chaîne de caractères se trouve au même endroit ou est placée plus loin dans l'ordre alphabétique qu'une deuxième, notez ge entre les deux valeurs à comparer (ge = greater or equal = plus grand ou égal)..
Pour demander si une première chaîne de caractères se trouve au même endroit ou est placée plus avant dans l'ordre alphabétique qu'une deuxième, notez le entre les deux valeurs à comparer (le = less or equal = plus petit ou égal).

Pour comparer la valeur d'une variable scalaire simple, qu'il s'agisse d'un nombre ou d'une chaîne de caractères, avec une expression régulière, utilisez l'opérateur de comparaison =~.

 vers le hautvers le bas 

Opérateurs de calcul

Pour effectuer des calculs avec des valeurs numériques, vous avez besoin d'opérateurs de calcul.

Exemple:

$classe_cent = 83 + 17;
$classe_cent = 113 - 13;
$classe_cent = 4 * 25;
$classe_cent = 450 / 4.5;
$classe_cent = 450 / 2 - 125;
$classe_cent = 10 * (2 + 8);
$classe_cent = 10 ** 2;
$x = $classe_cent % 4;
if($x == 0)
 { print $classe_cent, " est une ann&eacute;e bissextile \n" }

# notations sp&eacute;ciales :

$nombre = 100;
$nombre++;      # augmenter $nombre de 1
$nombre--;      # diminuer $nombre de 1
$nombre += 10;  # augmenter $nombre de 10
$nombre -= 10;  # diminuer $nombre de 10
$nombre *= 10;  # multiplier $nombre par 10
$nombre /= 10;  # diviser $nombre par 10
$nombre %= 10;  # faire avec $nombre une division modulo par 10
$nombre **= 2;  # élever $nombre à la puissance 2

Explication:

Notez les opérateurs mathématiques avec les signes qui leur sont habituels. Avec + vous notez une addition, avec - une soustraction, avec * une multiplication et avec / une division et avec ** vous élevez à une puissance "x puissance y". L'opérateur % représente une particularité. Il permet d'effectuer ce qu'on appelle une division modulo. Lors d'une opération modulo, deux valeurs sont divisées. Ici cependant, à la différence de la division normale, le résultat n'est que le reste de la division. Si vous notez par exemple: 13 % 5, vous obtenez comme résultat 3, parce que 13 divisé par 5 égale 2 et que le reste est 3. C'est ce 3 qui donne le résultat de la division modulo.

Vous pouvez noter plusieurs opérations à la suite. Ici, la règle habituelle de "priorité du point sur le trait" est à respecter. Si vous voulez imposer une autre règle, vous devez utiliser les parenthèses comme dans l'exemple ci-dessus $classe_cent = 10 * (2 + 8);.

Vous pouvez utiliser les notations particulières que vous trouvez dans les exemples ci-dessus si vous voulez abréger des additions ou des soustractions :
$nombre++; est une abréviation pour $nombre = $nombre + 1;
$nombre--; est une abréviation pour $nombre = $nombre - 1;
$nombre += 10; est une abréviation pour $nombre = $nombre + 10;
etc... pour les opérations du même genre.

L'opérateur ++ est aussi désigné comme opérateur d'incrémentation, l'opérateur -- comme opérateur de décrémentation.

Attention:

Pour les opérateurs ++ et -- il y a une particularité qui est attribuée à C ou même au langage machine (assembleur). Les opérateurs peuvent aussi bien être notés avant qu'après les variables (donc par exemple aussi bien $nombre++ que ++$nombre). S'ils sont placés avant, l'opération est effectuée avant que l'expression soit évaluée (jargon de la branche: pré-incrémentation et pré-décrémentation). L'inverse s'applique aussi: si l'opérateur est placé après la variable, l'opération est effectuée après que l'expression a été évaluée (jargon de la branche: post-incrémentation et post-décrémentation). La sortie du code qui suit ne devrait donc pas vous surprendre:
my $nombre=1;
print $nombre++;
print --$nombre;
Il est sorti deux fois 1. La première fois, parce que $nombre est sorti avant que 1 lui soit ajouté. La deuxième fois. parce que 1 est soustrait et que $nombre est sorti ensuite.

 vers le hautvers le bas 

Opérateurs logiques

Vous avez besoin d'opérateurs logiques pour formuler des expressions qui peuvent être vraies ou fausses. Vous trouverez l'emploi de telles expressions particulièrement pour les conditions pour les Autre page d'information instructions conditionnelles ou pour les Autre page d'information boucles.

Exemple:

if($a == 1 && $b == 2) {
  # si a = 1 et que b = 2
}
if($a == 1 and $b == 2) {
  # si a = 1 et que b = 2
}
if($a == 1 || $b == 1) {
  # si a = 1 ou que b = 1
}
if($a == 1 or $b == 1) {
  # si a = 1 ou que b = 1
}
if($a == 1 ^ $b == 1) {
  # si soit a = 1 ou soit b = 1
}
if($a == 1 xor $b == 1) {
  # si soit a = 1 ou soit b = 1
}
if (! ($a == 2)) {
  # a n'est pas égal à 2
}
if (not ($a == 2)) {
  # a n'est pas égal à 2
}

Explication:

Avec l'opérateur logique && ou son équivalent littéral (and) vous associez deux ou plusieurs conditions avec "et", ce qui veut dire que les deux ou toutes les conditions doivent être remplies pour que la condition globale soit remplie.
Avec l'opérateur logique || ou son équivalent littéral (or) vous associez deux ou plusieurs conditions avec le "ou" inclusif c'est à dire qu'il suffit que l'une des conditions soit remplie pour que la condition globale soit remplie.
Avec l'opérateur logique ^ ou son équivalent littéral (xor) vous associez deux ou plusieurs conditions avec le "ou" exclusif, c'est à dire qu'il faut que soit l'une ou soit l'autre condition soit remplie pour que la condition globale soit remplie.
Avec l'opérateur logique ! ou son équivalent littéral (not) vous niez la condition qui suit, c'est à dire que vous ne demandez pas si la condition est vraie mais au contraire si elle est fausse.

 vers le hautvers le bas 

Opérateurs de bits

Pour se servir correctement des opérateurs de bits vous devez comprendre les processus de mise en mémoire internes à l'ordinateur. C'est pourquoi les opérateurs de bits ne sont mentionnés que brièvement ici.

>> déplace les bits vers la droite
<< déplace les bits vers la gauche
& associe deux valeurs avec ET pour les bits
| associe deux valeurs avec OU pour les bits
^ associe deux valeurs avec ou exclusif pour les bits (XOR) pour les bits
~ forme le complément d'une valeur (tous les bits sont inversés)

 vers le hautvers le bas 

Opérateur pour concaténer des chaînes de caractères

En Perl vous n'avez pas besoin comme dans certains autres langage d'une fonction pour concaténer les chaînes de caractères. Il existe pour cela un opérateur.

Exemple d'un script CGI complet en Perl:

#!/usr/bin/perl -w

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

my $sortie_HTML = "La variable d'environnement <b>HTTP_USER_AGENT</b> a la valeur <b>".$ENV{HTTP_USER_AGENT}."</b><br>";
$sortie_HTML .= "<hr>fin de la sortie";

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 $sortie_HTML;

print "</body></html>\n";

Explication:

Le point . est l'opérateur pour concaténer les chaînes de caractères. Les chaînes de caractères concaténées peuvent être littérales, donc contenir simplement du texte, mais aussi être une variable. Dans le script d'exemple vous voyez un cas d'application typique pour des scripts CGI pour l'opérateur pour concaténer des chaînes de caractères. Là est sauvegardée une sortie HTML assez longue dans la scalaire $sortie_HTML, qui est trafiquée avec différentes chaînes de caractères. Entre autres y est insérée la valeur de la variable d'environnement HTTP_USER_AGENT, qui contient le nom et la version du navigateur appelant.

L'exemple de script montre aussi dans la deuxième instruction comment de nouvelles chaînes de caractères peuvent être accrochées à une chaîne déjà existante. Avec .= ce qui est placé à droite du signe est simplement affecté à la variable qui est placée à gauche du signe. La même instruction peut être notée sous la forme longue suivante:
$sortie_HTML = $sortie_HTML."<hr>fin de la sortie";

Le script sort la chaîne de caractères ainsi formée dans le navigateur avec une instruction print.

 vers le hautvers le bas 

Opérateurs de répétition de chaînes de caractères

En Perl vous pouvez "multiplier" les chaînes de caractères avec x.

Exemple:

print "A"."h" x 10, "!\n";
# crée la sortie "Ahhhhhhhhhh!"

Explication:

Notez l'opérateur x derrière la chaîne de caractères que vous voulez multiplier. Derrière l'opérateur, notez le nombre de fois que doit être répétée la chaîne de caractères.

 vers le hautvers le bas 

Ordre de priorité des opérateurs

Pour les opérateurs de Perl, existe un ordre de priorité bien établi. Si vous effectuez des opérations complexes ou combinez plusieurs conditions entre elles, prévaut pour la résolution interne de telles expressions complexes la prééminence suivante:

  1. ordre de priorité: ++ -- (incrémenter. décrémenter)
  2. ordre de priorité: ** (puissance)
  3. ordre de priorité: ! ~ (négation logique et pour les bits)
  4. ordre de priorité: =~ !~ (Liaison à des Autre page d'information expressions régulières)
  5. ordre de priorité: * / % x (multiplication, division, division modulo, répétition de chaînes de caractères)
  6. ordre de priorité: + - . (addition, soustraction, concaténation de chaînes de caractères)
  7. ordre de priorité: << >> (déplacement de bits)
  8. ordre de priorité: < <= > >= lt le gt ge (comparaison plus grand que, plus petit que)
  9. ordre de priorité: == != eq ne (égalité/inégalité)
  10. ordre de priorité: & (ET pour les bits)
  11. ordre de priorité: | ^ (OU pour les bit - inclusif/exclusif)
  12. ordre de priorité: && (ET logique)
  13. ordre de priorité: || (OU logique)
  14. ordre de priorité: .. (définitions de passages dans des Autre page d'information listes)
  15. ordre de priorité: ?: (Autre page d'information Condition soit... soit...)
  16. ordre de priorité: = += -= &= ^= |= (affectation)
  17. ordre de priorité: , => (énumération)
  18. ordre de priorité: not (négation logique)
  19. ordre de priorité: and (ET logique)
  20. ordre de priorité: or xor (OU logique (inclusif/exclusif)

À l'aide de parenthèses, vous pouvez influencer l'ordre de priorité des opérateurs et évaluer des expressions comme vous le désirez.

Exemple:

$statistique_officielle = 3.29 * 3 + 4.71;
$Ma_statistique = 3.29 * (3 + 4.71);

Explication:

Par les parenthèses dans l'exemple, la règle du "trait avant le point" qui s'applique aux opérateurs de calcul de Perl, est levée.

 vers le haut
page suivante Autre page d'information Expressions régulières
page précédente Autre page d'information Commandes de saut
 

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