Outils pour utilisateurs

Outils du site


perl:tests_if_until

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
perl:tests_if_until [2009/03/15 00:45] – édition externe 127.0.0.1perl:tests_if_until [2013/03/12 23:41] (Version actuelle) root
Ligne 1: Ligne 1:
 +====== Tests ======
 +
 ====== 1. If, else, elsif ====== ====== 1. If, else, elsif ======
  
 La structure des tests et des expressions booléennes en Perl est une fois de plus très similaire à ce que l'on trouve en C : La structure des tests et des expressions booléennes en Perl est une fois de plus très similaire à ce que l'on trouve en C :
 +<code perl>
   if ($i > 0) {   if ($i > 0) {
   print "$i est strictement positif\n";   print "$i est strictement positif\n";
   }   }
 +</code>
  
 Comme pour les boucles, on peut également profiter de l'inversion de la syntaxe: dans ce cas le bloc disparait au profit d'une seule instruction, et les parenthèses deviennent également facultatives : Comme pour les boucles, on peut également profiter de l'inversion de la syntaxe: dans ce cas le bloc disparait au profit d'une seule instruction, et les parenthèses deviennent également facultatives :
 +<code perl>
   print "$i est un entier strictement positif\n" if $i < 0;   print "$i est un entier strictement positif\n" if $i < 0;
 +</code>
  
 Pour proposer une branche alternative : Pour proposer une branche alternative :
 +<code perl>
   if ($i >= 0) {   if ($i >= 0) {
   print "$i est positif";   print "$i est positif";
Ligne 15: Ligne 22:
   print "$i est négatif";   print "$i est négatif";
   }   }
 +</code>
  
 Par contre si l'on veut évaluer plusieurs branches (exclusives) en cascade, il y a le mot clé spécifique //elsif// : Par contre si l'on veut évaluer plusieurs branches (exclusives) en cascade, il y a le mot clé spécifique //elsif// :
 +<code perl>
   if ($i > 0) { print "$i est strictement positif"; }   if ($i > 0) { print "$i est strictement positif"; }
   elsif ($i ====== 0) { print "$i est nul"; }   elsif ($i ====== 0) { print "$i est nul"; }
   else { print "$i est négatif"; }   else { print "$i est négatif"; }
 +</code>
  
 C'est une erreur de syntaxe d'utiliser la construction //else if...//! Ce choix de langage est principalement issu du C où la distinction des imbrications ou des cascades sont la plupart du temps délicates : C'est une erreur de syntaxe d'utiliser la construction //else if...//! Ce choix de langage est principalement issu du C où la distinction des imbrications ou des cascades sont la plupart du temps délicates :
Ligne 27: Ligne 37:
  
 Encore un emprunt du C, il doit son nom à sa spécificité: c'est le seul opérateur utilisant 3 opérandes. Cette expression : Encore un emprunt du C, il doit son nom à sa spécificité: c'est le seul opérateur utilisant 3 opérandes. Cette expression :
 +<code perl>
   my $signe = ($i >= 0) ? "positif" : "négatif";   my $signe = ($i >= 0) ? "positif" : "négatif";
 +</code>
  
 ... est équivalente à cette construction : ... est équivalente à cette construction :
 +<code perl>
   my $signe;   my $signe;
   if ($i >= 0) { $signe = "positif"; } else { $signe = "négatif"; }   if ($i >= 0) { $signe = "positif"; } else { $signe = "négatif"; }
 +</code>
  
 ====== 3. Expressions booléennes ====== ====== 3. Expressions booléennes ======
Ligne 39: Ligne 51:
 ===== Opérateurs de comparaison ===== ===== Opérateurs de comparaison =====
  
-^ **Numérique**^ +^ **Numérique** ^ **Chaîne** **Description** ^
-**Chaîne** +
-**Description**|+
 | < | lt | strictement inférieur| | < | lt | strictement inférieur|
 | <= | le | inférieur ou égal| | <= | le | inférieur ou égal|
 | > | gt | strictement supérieur| | > | gt | strictement supérieur|
 | >= | ge | supérieur ou égal| | >= | ge | supérieur ou égal|
-====== | eq | identique|+| == | eq | identique|
 | != | ne | différent| | != | ne | différent|
 | <=> | cmp | comparaison (pour le tri)| | <=> | cmp | comparaison (pour le tri)|
Ligne 53: Ligne 63:
 Quelques exemples illustrant la différence entre les deux contextes : Quelques exemples illustrant la différence entre les deux contextes :
  
-^ **Numérique**^ +^ **Numérique** ^ **Chaîne** ^
-**Chaîne** |+
 | "a" < "b" est **faux** | "a" lt "b" est **vrai**| | "a" < "b" est **faux** | "a" lt "b" est **vrai**|
 | "-1.5" < "1" est **vrai** | "-1.5" lt "1" est **faux**| | "-1.5" < "1" est **vrai** | "-1.5" lt "1" est **faux**|
Ligne 75: Ligne 84:
 Exemples : Exemples :
  
-^ **Valeur scalaire** ^ **Valeur booleenne444^+^ **Valeur scalaire** ^ **Valeur booleenne ** ^
 | undef | faux| | undef | faux|
 | 0 | faux| | 0 | faux|
Ligne 110: Ligne 119:
  
 Perl a emprunté les facilités du Shell pour effectuer des tests directement sur des fichiers, ce qui est très pratique et évite d'utiliser une bibliothèque de programmation fastidieuse (se référer à //file test// dans //man perlfunc//). Exemple : Perl a emprunté les facilités du Shell pour effectuer des tests directement sur des fichiers, ce qui est très pratique et évite d'utiliser une bibliothèque de programmation fastidieuse (se référer à //file test// dans //man perlfunc//). Exemple :
 +<code perl>
   my $file = "source.txt";   my $file = "source.txt";
   die "Fichier $file non présent" if (!-e $file);   die "Fichier $file non présent" if (!-e $file);
 +</code>
  
 Pour référence, voici les tests extrait de la documentation de Perl : Pour référence, voici les tests extrait de la documentation de Perl :
Ligne 149: Ligne 160:
 | -A | Same for access time.| | -A | Same for access time.|
 | -C | Same for inode change time (Unix, may differ for other platforms)| | -C | Same for inode change time (Unix, may differ for other platforms)|
- 
perl/tests_if_until.1237077949.txt.gz · Dernière modification : 2009/03/15 00:47 (modification externe)