SELFHTML/Quickbar  CGI/Perl  Éléments de langage Perl


Opérateurs

Cette page est un document avec du texte et des informations

 Opérateur d'affectation
 Opérateurs de comparaison
 Opérateurs de calcul
 Opérateurs logiques
 Opérateurs de bit
 Opérateurs de liaison de chaînes de caractères
 Opérateurs de répétition de chaînes de caractères
 Ordre de priorité des opérateurs

 

Opérateur d'affectation

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

Exemples:

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

Explication:

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

 

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 variable scalaire simple avec une constante.

Exemples:

if($sensdelavie == 42)
 { print "Vous avez compris la vie!\n" };
if($sensdelavie != 42)
 { print "Vous n'avez rien compris à la vie!\n" };
if($sensdelavie > 42)
 { print "Ça va pas?\n" };
if($sensdelavie < 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($motpasse eq "Hexasex")
 { print "Vous avez accès au sexe en dimension hexadécimale!\n" };
if($motpasse ne "Hexasex")
 { print "Préférez le 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  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 =~.

 

Opérateurs de calcul

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

Exemples:

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

/* notations spé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

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. 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 imposez une autre règle, vous devez utiliser les parenthèses comme dans l'exemple ci-dessus $classecent = 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;
$nombre -= 10; est une abréviation pour $nombre = $nombre - 10;

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

 

Opérateurs logiques

Vous avez besoin d'opérateurs logiques quand vous voulez formuler des conditions plus complexes pour des instructions conditionnelles ou des  boucles.

Exemple:

#!/usr/bin/perl

$essais= 1;
$valeur= 0;
$min = 66;
$max = 77;

entree:
print "Entrez un nombre entre ", $min, " et ", $max, " : ";
$valeur= <STDIN>;
chop($valeur);
if($valeur< $min || $valeur> $max)
 {
  if($valeur=~ /[^0-9]/)
   {
     print "Ce n'était pas un nombre.\n\n";
     $essais++;
     goto entree;
   }
  if($essais< 3 && $valeur< $min)
   { print "Votre nombre est trop petit.\n\n"; }
  elsif($essais< 3 && $valeur> $max)
   { print "Votre nombre est trop grand.\n\n"; }
  elsif($essais>= 3 && $valeur< $min)
   { print "Crénom votre nombre était encore une fois trop petit!\n\n"; }
  elsif($essais>= 3 && $valeur> $max)
   { print "Crénom votre nombre était encore une fois trop grand!\n\n"; }
  $min = abs($valeur- $min);
  $max = $min + abs($max - $min);
  $essais++;
  goto entree;
 }
if($essais> 1)
 { print "Vous voyez, c'est comme ça qu'on apprend!\n"; }
else
 { print "Vous fûtes certainement un brave gosse!\n"; }

Explication:

Avec l'opérateur logique && 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 || 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.

 

Opérateurs de bits

Les opérateurs de bits sont réservés aux professionnels. 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
& définit une condition "et" dans un masque de bits
| définit une condition "ou" inclusive dans un masque de bits
^ définit une condition "ou" exclusive dans un masque de bits
! définit une condition "non" dans un masque de bits
~ définit une condition complémentaire dans un masque de bits

 

Opérateurs de liaison de chaînes de caractères

Avec un point ., vous pouvez accrocher une chaîne de caractères à une autre.

Exemple:

#!/usr/bin/perl

@sujets= ("Valery Giscard d'Estaing ","Jacques Chirac ","Lionel Jospin ","Robert Hue ");
@verbes= ("aime ","vénère ","enjôle ","enrichit ");
@compobjdir = ("la magie ","la joie ","le principe ","la griserie ");
@compdenom = ("du pouvoir.","de l'assemblée.","du sénat.","du plaisir des sens.");
@indices = (0..3);

print "alea"."phrases\n\n";
while($i < 10)
 {
  $j = 0;
  sleep(2);
  $aleaphrase = "";
  srand(time());
  foreach $j (0..3)
   {
    $indices[$j] = rand(3);
   }
  $aleaphrase = $aleaphrase.$sujets[$indices[0]];
  $aleaphrase = $aleaphrase.$verbes[$indices[1]];
  $aleaphrase = $aleaphrase.$compobjdir[$indices[2]];
  $aleaphrase = $aleaphrase.$compdenom[$indices[3]];
  print $aleaphrase, "\n";
  $i++;
 }

Explication:

Vous pouvez accrocher aussi bien des variables de chaînes de caractères que des mentions directes de chaînes de caractères avec ..

L'exemple de script ci-dessus crée des phrases aléatoires se basant sur des listes d'éléments de phrases définis au début du script.

 

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:

#!/usr/bin/perl

print "A"."h" x 10, "!\n";
# provoque la sortie de  "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.

 

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. rang: , (énumération)
  2. rang: = += -= &= ^= |= (affectation)
  3. rang: ?: ( condition soit... soit)
  4. rang: .. (définition de passage dans des  listes)
  5. rang: || (ou logique)
  6. rang: && (et logique)
  7. rang: | ^ (ou - inclusif/exclusif)
  8. rang: & (et)
  9. rang: == != eq ne (égalité/inégalité)
  10. rang: < <= > >= lt le gt ge (comparaison plus grand/plus petit que)
  11. rang: << >> >> (déplacement de bits)
  12. rang: + -. (addition, soustraction, addition de chaînes de caractères)
  13. rang: * / % x (multiplication, division, division modulo, répétition de chaînes de caractères)
  14. rang: =~ !~ (coïncidence pour des  expressions régulières)
  15. rang: ** (puissance)
  16. rang: ! ~ - (opérateur de bits)
  17. rang: ++ -- (incrémentation, décrémentation)

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

Exemple:

#!/usr/bin/perl

$statistiqueofficielle  = 3.29 * 3 + 4.71;
$mastatistique = 3.29 * (3 + 4.71);
print "La statistique officielle s'élève à ",$statistiqueofficielle,"\n";
print "Ma statistique s'élève à  ",$mastatistique,"\n";

 

après: Expressions régulières
avant: Boucles et commandes de saut
 

SELFHTML/Quickbar  CGI/Perl  Éléments de langage Perl

© 1998 Stefan Münz / © 2001 Traduction  Serge François, 13405@free.fr