Les opérateurs

Il existe de nombreux types d'opérateur dans le langage Perl, tous ne seront pas abordés ici.

Les opérateurs arithmétiques

Vocabulaire : les opérateurs agissent sur les opérandes (opx).
 
Opérateur Description
op1 + op2  addition
op1 - op 2  soustraction
op1 * op2 multiplication
op1 ** op2  exponentiation
op1 / op2  division
op1 % op2 modulo
op1++ post-incrémentation de 1
op1-- post-décrémentation de 1
++op1 pré-incrémentation de 1
--op1 pré-décrémentation de 1
+op1 retourne op1 * 1
-op1 retourne op1 * (-1)

Les opérateurs logiques

Ici les opérandes sont des conditions vraies ou fausses.
Opérateur Description
op1 && op2 et
op1 || op2 ou non exclusif 
!op1 négation
Voici un exemple d'utilisation d'opérateur logique :

$a = 4;
$b = 5;

if ( $a == 4 && $b == 5 )
{
                    print "\$a et \$b sont des variables respectivement égales à 4 et 5. \n";
}

Les opérateurs binaires bits à bits

Ici les opérandes sont des nombres exprimés en base 10. Attention, ces opérateurs agissent sur les représentations binaires de ces nombres.
 
Opérateur Description
op1 & op2 et
op1 | op2 ou non exclusif 
op1 ^ op2 ou exclusif
~op1  complémentaire
op1 >> op2 décalage vers la droite 
(division par 2)
op1 << op2 décalage vers la gauche 
(multiplication par 2)
Exemple d'utilisation d'un opérateur binaire bits à bits :

$result = 128 | 16;
print "$result \n";

( 128 = 10000000, 16 = 00010000, 144=10010000).

Les opérateurs de relations numériques

Ici les opérandes sont des nombres.
Opérateur  Description
op1 == op2 Retourne vrai s'il y a égalité 
entre les 2 opérandes, sinon 
faux.
op1 != op2 Retourne vrai s'il n'y a pas 
égalité entre les opérandes, 
sinon faux.
op1 < op2  Retourne vrai si op1 est 
strictement plus petit que 
op2
op1 > op2 Retourne vrai si op1 est 
strictement plus grand 
que op2.
op1 >= op2 Retourne vrai si op1 est 
plus grand ou égal à op2.
op1 <= op2 Retourne vrai si op1 est 
plus petit ou égal à op2.
op1 <=> op2 Retourne 1 si op1 est plus 
grand que op2, 0 si op1 
est égal à op2, -1 si op1 est 
plus petit que op2.

Les opérateurs de comparaison entre chaînes de caractères

Ici les opérandes sont des chaînes de caractères. Les valeurs des chaînes de caractère sont construites à partir du code ASCII.
 
Opérateur  Description
op1 eq op2 Retourne vrai si op1 
est identique à op2.
op1 neq op2 Retourne vrai si op1 
est différent de op2.
op1 lt op2 Retourne vrai si op1 
est strictement inférieur 
à op2.
op1 gt op2 Retourne vrai si op1 
est strictement supérieur 
à op2.
op1 le op2 Retourne vrai si op1 
est plus petit ou égal 
à op2. 
op1 ge op2 Retourne vrai si op1 
est plus grand ou égal 
à op2.
op1 cmp op2 Retourne 1 si op1 est 
supérieur à op2, 0 si op1 
est égal à op2, -1 si op1 
est inférieur à op2.

L'opérateur ternaire et if

[partie conditionnelle] ? [valeur attribuée dans l'affirmative] : [valeur attribuée dans la négative];
est équivalent aux lignes de code suivantes :

if (partie conditionnelle) {
              return (valeur attribuée dans l'affirmative);
}else{
              return (valeur attribuée dans la négative);
}

Voici un exemple d'utilisation de l'opérateur ternaire :

$a = 2;
$b = 0;

$b = ( $a < 4) ? 4 : 3 ;

print $b;

L'opérateur de portée (..)

L'opérateur de portée permet de créer des vecteurs dont les éléments sont ordonnés par valeurs croissantes.

Exemples d'utilisation :

@Vecteur = (1..10);
print "@Vecteur\n";
@Vecteur = ("A".."Z");
print "@Vecteur\n";
@Vecteur = (01..10);
print "@Vecteur\n";
@Vecteur = ("aa".."bf");
print "@Vecteur\n";

Les opérateurs de chaînes de caractère

Opérateur Description
. Opérateur de concaténation.
x Opérateur de répétition.
Exemples d'utilisation :

$Var1 = "UN";
$Var2 ="DEUX";
$Var = $Var1 . $Var2;
print "$Var \n";
$Var3 = $Var1 x 7;
print "$Var3 \n";

Les niveaux de priorité des opérateurs

L'ordre d'exécution des opérateurs n'est pas arbitraire. Les opérateurs de niveaux de priorité élevés sont exécutés en premier. Il y 21 niveaux de priorité en Perl.
 
Niveau de priorité Opérateurs
20 (),[],{}
19 ->
18 ++, --
17 **
16 !, ~,+op,-op, /
15 =~,!~
14 *,/,%,x
13 +,-,.
12 <<, >>
11  
10  
9  
8 &
7 |,^
6 &&
5 ||
4 ..
3 ?:
2  
1 ,
0 not, and,or,xor


suite-index