SELFHTML/Quickbar
CGI/Perl
Éléments de langage Perl
Vous pouvez par exemple affecter une valeur à une variable scalaire simple. Pour cela, l'opérateur d'affectation est le signe égal.
$Nom= "Serge François"; $Code = 4711; |
Une valeur est affectée aux variables respectives au moyen du signe égal =.
![]() ![]() |
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.
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" }; |
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 =~.
![]() ![]() |
Pour effectuer des calculs avec des valeurs numériques, vous avez besoin d'opérateurs de calcul.
$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 |
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.
![]() ![]() |
Vous avez besoin d'opérateurs logiques quand vous voulez formuler des
conditions plus complexes pour des instructions
conditionnelles ou des
boucles.
#!/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"; } |
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.
![]() ![]() |
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
![]() ![]() |
Avec un point ., vous pouvez accrocher une chaîne de caractères à une autre.
#!/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++; } |
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.
![]() ![]() |
En Perl vous pouvez "multiplier" les chaînes de caractères avec x.
#!/usr/bin/perl print "A"."h" x 10, "!\n"; # provoque la sortie de "Ahhhhhhhhhh!" |
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.
![]() ![]() |
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:
À 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.
#!/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:![]() |
![]() |
avant:![]() |
![]() |
SELFHTML/Quickbar
CGI/Perl
Éléments de langage Perl
Serge François, 13405@free.fr