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
wiki:mode-d-emploi:perl [Le 01/11/2007 à 19:45] fftigerwiki:mode-d-emploi:perl [Le 15/08/2022 à 15:30] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +
 +
 ====== Le Perl pour WikiSquare ====== ====== Le Perl pour WikiSquare ======
  
-<note important> +L'un des éléments fondamentaux dans la maitrise de l'automatisation, est la maitrise d'un langage de programmation. Ainsi, il était nécessaire pour le wiki d'utiliser un langage interprété qui soit simple d'utilisation, et tout à la fois puissant en ce qui concerne la manipulation de textes (média sur lequel repose le code wiki). Il semble que le langage Perl possède ces deux qualités, c'est pourquoi j'ai choisi, même si je n'ai jamais écrit une seule ligne de code en Perl, de fonder les principes d'automatisation de Wikisquare sur celui-ci. Même si d'autre langages tel que le Bash (que j'utilisais auparavant) auraient tout à fait pu faire l'affaire.
-Cet article étant en cours de construction, il est préférable de ne pas y toucher pour le moment. +
-</note> +
- +
-L'un des éléments fondamentaux dans la maîtrise de l'automatisation, est la maîtrise d'un langage de programmation. Ainsi, il était necessaire pour le wiki d'utiliser un langage interprété qui soit simple d'utilisation, et tout à la fois puissant en ce qui concerne la manipulation de textes (media sur lequel repose le code wiki). Il semble que le langage Perl (utilisé pour certains bots de Wikipedia) possède ces deux qualités, c'est pourquoi j'ai choisi, même si je n'ai jamais écrit une seule ligne de code en Perl, de fonder les principes d'automatisation de WikiSquare sur celui-ci. Même si d'autre langages tel que le bash (que j'utilisais auparavent) auraient tout à fait pu faire l'affaire.+
  
-Soyez indulgents, il n'est pas facile (mais possible) de donner un cours sur quelque chose que l'on ne connait pas soi-même. Cependant rassurez-vous, je n'ai aucune intention d'écrire du vent, et je testerais et mettrais en application chaqun des éléments que j'énnoncerais. J'essayerais autant que possible de me baser sur le manuel de référence. Cet article ne se veut pas un cours complet de Perl, si c'est ce que vous cherchez , voir la section "Voir aussi". Il présentera les bases indispensable à la conception de scripts en Perl et se concentrera uniquement sur les points essentiels dans la conception de mécanismes d'automatisation pour le wiki. Il restera le plus clair et simple possible et sera agrémenté d'exemples concrets.+Soyez indulgents, il n'est pas facile (mais possible) de donner un cours sur quelque chose que l'on ne connait pas soi-même. Cependant rassurez-vous, je n'ai aucune intention d'écrire du vent, et je testerai et mettrai en application chacun des éléments que j'énoncerais. J'essayerais autant que possible de me baser sur le manuel de référence. Cet article ne se veut pas un cours complet de Perl, si c'est ce que vous cherchez , voir la section "Voir aussi". Il présentera les bases indispensables à la conception de scripts en Perl et se concentrera uniquement sur les points essentiels dans la conception de mécanismes d'automatisation pour le wiki. Il restera le plus clair et simple possible et sera agrémenté d'exemples concrets.
  
 <note> <note>
-FIXME : **FFTiger :** Etant l'auteur original de cet article, j'ai parfois écrit à la première personne du singulier pour préciser le contexte dans lequel il a été écrit. Cependant, lors des évolutions futures de celui-ci (j'entends par là une fois que l'expérience aura permis à moi et la communauté de corriger mes erreurs de débutant), il serait bien de supprimer ces passages pour en faire un article moins personnel et supprimer également cette note.+FIXME : **FFTiger :** Étant l'auteur original de cet article, j'ai parfois écrit à la première personne du singulier pour préciser le contexte dans lequel il a été écrit. Cependant, lors des évolutions futures de celui-ci (j'entends par là une fois que l'expérience aura permis à moi-même et à la communauté de corriger mes erreurs de débutant), il serait bien de supprimer ces passages pour en faire un article moins personnel et supprimer également cette note.
 </note> </note>
  
Ligne 16: Ligne 14:
  
 Pour une compatibilité optimum, un script Perl adopte les caractéristiques suivantes : Pour une compatibilité optimum, un script Perl adopte les caractéristiques suivantes :
-  * Il sagit d'un fichier texte qui peut donc être édité avec tous les éditeurs compatibles avec ce média+  * Il s'agit d'un fichier texte qui peut donc être édité avec tous les éditeurs compatibles avec ce média
   * Son extension est ''.pl''   * Son extension est ''.pl''
   * Le fichier débute par le commentaire suivant :   * Le fichier débute par le commentaire suivant :
Ligne 27: Ligne 25:
 ==== Unix ==== ==== Unix ====
  
-Pour éxecuter le script Perl, saisissez simplement la commande suivante :+Pour exécuter le script Perl, saisissez simplement la commande suivante :
 <code> <code>
 perl nomprog.pl perl nomprog.pl
 </code> </code>
  
-<note> +Pour rendre un fichier exécutable, saisissez la commande :
-Pour rendre un fichier executable, saisissez la commande :+
 <code> <code>
 chmod u+x nomprog.pl chmod u+x nomprog.pl
 </code> </code>
-Vous pourez ainsi executer directement le script à condition que l'entête soit correctement indiqué comme précisé ci-dessus, en saisissant simplement :+Vous pourrez ainsi exécuter directement le script à condition que l'entête soit correctement indiqué comme précisé ci-dessus, en saisissant simplement :
 <code> <code>
 ./nomprog.pl ./nomprog.pl
 </code> </code>
-</note> 
- 
 ==== Windows ==== ==== Windows ====
  
Ligne 49: Ligne 44:
 ===== Syntaxe ===== ===== Syntaxe =====
  
-Le script est évalué de haut en bas et de gauche à droite depuis le début de celui-ci. Chaque instruction se termine par un point-virgule ('';'') et les chaines composés des caractères : "espace", "tabulation" et "retour à la ligne", ne sont prise dans leur ensemple que comme un unique séparateur. Mis à part pour les chaines entre quotes où ils sont comptés tel quel.+Le script est évalué de haut en bas et de gauche à droite depuis le début de celui-ci. Chaque instruction se termine par un point-virgule ('';'') et les chaines composés des caractères : "espace", "tabulation" et "retour à la ligne", ne sont prise dans leur ensemble que comme un unique séparateur. Mis à part pour les chaines entre quotes où ils sont comptés tel quel.
  
 **Exemple :** **Exemple :**
Ligne 74: Ligne 69:
 ==== Commentaires ==== ==== Commentaires ====
  
-Le caractère ''#'' lorsqu'il n'est pas entouré de quotes, ni précédé du signe ''$'', signifit que tous les caractères qui se situent après, sur la ligne courante sont en commentaire. Ils n'ont donc aucune incidence sur le script.+Le caractère ''#'' lorsqu'il n'est pas entouré de quotes, ni précédé du signe ''$'', signifie que tous les caractères qui se situent après, sur la ligne courante sont en commentaire. Ils n'ont donc aucune incidence sur le script.
  
-Les commentaires sont principalements destinés aux développeur (y compris vous) amenés à lire votre programme. Pour une meilleur compréhension de celui-ci. En règle générale, leur but n'est pas de détailler le fonctionnement de chaque commande mais plutôt d'éclaircir le fonctionnement général de votre script.+Les commentaires sont principalement destinés aux développeur (y compris vous) amenés à lire votre programme. Pour une meilleur compréhension de celui-ci. En règle générale, leur but n'est pas de détailler le fonctionnement de chaque commande mais plutôt d'éclaircir le fonctionnement général de votre script.
  
 **Exemple :** **Exemple :**
Ligne 93: Ligne 88:
 <code perl> <code perl>
 my $nom = 'Sébastien'; my $nom = 'Sébastien';
-print "Salut $name !\n"; # Affiche "Salut Sébastien !", suivi d'un retour à la ligne+print "Salut $name !\n"; # Affiche "Salut Sébastien !", suivis d'un retour à la ligne
 print 'Salut $name !\n'; # Affiche "Salut $name !\n" print 'Salut $name !\n'; # Affiche "Salut $name !\n"
 </code> </code>
Ligne 99: Ligne 94:
 ==== Valeurs numériques ==== ==== Valeurs numériques ====
  
-Il n'est pas necessaire d'encadrer les valeurs numériques par des quotes. La séparation entre la partie entière et décimale est marquée par un point (''.'').+Il n'est pas nécessaire d'encadrer les valeurs numériques par des quotes. La séparation entre la partie entière et décimale est marquée par un point (''.'').
  
 **Exemple :** **Exemple :**
Ligne 113: Ligne 108:
  
 En Perl on distingue trois principaux types de variables : En Perl on distingue trois principaux types de variables :
-  * "Scalar" : Un seul élément.+  * Scalaires : Un seul élément.
   * Tableaux : Représente une liste d'éléments.   * Tableaux : Représente une liste d'éléments.
-  * "Hashes" : Représente des couples d'éléments.+  * Tables de hachage : Représente des couples d'éléments.
   * Références : Association de ces trois types pour créer des types de donnés plus complexes.   * Références : Association de ces trois types pour créer des types de donnés plus complexes.
  
-On distingue également les variables locales des variables globales. On parle également de porté de la variable. Une varible locale est accessible dans l'ensemble du script. Une variable locale n'est accessible que dans le bloc en cours. Pour rendre une variable locale, il faut la faire précéder de ''my''. L'utilisation inutile de variables globales est considérée comme une mauvaise pratique de programmation.+On distingue également les variables locales des variables globales. On parle également de porté de la variable. Une variable locale est accessible dans l'ensemble du script. Une variable locale n'est accessible que dans le bloc en cours. Pour rendre une variable locale, il faut la faire précéder de ''my''. L'utilisation inutile de variables globales est considérée comme une mauvaise pratique de programmation.
  
 <note important> <note important>
-Il est fortement conseillé de n'utiliser que des caractères alphanumériques (chiffres et lettres) dans les noms de variables. Evitez les accents ou autres caractères spéciaux qui pouraient provoquer des erreurs lors de l'éxecution du script.+Il est fortement conseillé de n'utiliser que des caractères alphanumériques (chiffres et lettres) dans les noms de variables. Evitez les accents ou autres caractères spéciaux qui pourraient provoquer des erreurs lors de l'exécution du script.
 </note> </note>
  
-==== "Scalar" ====+==== Scalaires ====
  
-Un "Scalar" représente une variable qui n'a au même moment qu'une seule valeure. Pour faire référence à un "Scalar", on fait précéder son nom du caractère ''$''.+Un scalaire représente une variable qui n'a au même moment qu'une seule valeur. Pour faire référence à un scalaire, on fait précéder son nom du caractère ''$''.
  
 **Exemple :** **Exemple :**
Ligne 138: Ligne 133:
  
 <note> <note>
-''$_'' fait référence à la variable par défaut utilisé dans nombre de fonctions. Elle est notament utilisé dans certaines boucles. Voir les structures conditionnelles.+$_ fait référence à la variable par défaut utilisé dans nombre de fonctions. Elle est notamment utilisé dans certaines boucles. Voir les structures conditionnelles.
 </note> </note>
  
Ligne 154: Ligne 149:
 </code> </code>
  
-<note important> +Dans le dernier exemple, le colorateur syntaxique du wiki laisse présager que tout ce qui se situe après le premier ''#'' de la dernière ligne est en commentaire. C'est un bug ! Essayez de refaire cet exemple, ''print $amis[$#amis];'' affiche bien "Myst6re" !
-Dans le dernier exemple, le colorateur syntaxique du wiki laisse présager que tout ce qui se situ après le premier ''#'' de la dernière ligne est en commentaire. C'est un bug ! Essayez de refaire cet exemple, ''print $amis[$#amis];'' affiche bien "Myst6re" !+
 FIXME : Corriger ce bug. FIXME : Corriger ce bug.
-</note> 
  
 Pour faire référence à plusieurs éléments d'un tableau on utilise les syntaxes suivantes : Pour faire référence à plusieurs éléments d'un tableau on utilise les syntaxes suivantes :
   - ''@nomdutableau'' : Fait référence au tableau dans sa totalité.   - ''@nomdutableau'' : Fait référence au tableau dans sa totalité.
   - ''@nomdutableau[a,b,etc]'' : Fait référence aux éléments d'indice a et b du tableau.   - ''@nomdutableau[a,b,etc]'' : Fait référence aux éléments d'indice a et b du tableau.
-  - ''@nomdutableau[a..b]'' : Fait à tous les éléments de a à b (inclus) du tableau.+  - ''@nomdutableau[a..b]'' : Fait référence à tous les éléments de a à b (inclus) du tableau.
  
 **Exemple :** **Exemple :**
Ligne 177: Ligne 170:
 </note> </note>
  
-<note> 
 Le tableau ''@ARGV'' fait référence aux arguments passés au script en ligne de commande. Et ''@_'' aux arguments passés dans une "sous-routine". FIXME : Ca veut rien dire.  Le tableau ''@ARGV'' fait référence aux arguments passés au script en ligne de commande. Et ''@_'' aux arguments passés dans une "sous-routine". FIXME : Ca veut rien dire. 
-</note> 
  
-==== "Hashes" ====+==== Tables de hachage ====
  
-Les "Hash" sont une liste de couples de clé/valeur, comprenez à chaqun des mots clés qui composent le "Hash" est associée une valeur. On peut ainsi récupéré une valeur à partir de sa clée. On peut utiliser deux synatxe différentes :+Une table de hachage est une liste de couples de clé/valeur, comprenez à chacun des mots clés qui composent la table de hachage est associée une valeur. On peut ainsi récupéré une valeur à partir de sa clé. On peut utiliser deux syntaxe différentes :
   - ''my %nomduhash = ('clé1', 'valeur1', 'clé2', 'valeur2', etc)''   - ''my %nomduhash = ('clé1', 'valeur1', 'clé2', 'valeur2', etc)''
   - ''my %nomduhash = ('clé1' => 'valeur1', 'clé2' => 'valeur2', etc)''   - ''my %nomduhash = ('clé1' => 'valeur1', 'clé2' => 'valeur2', etc)''
Ligne 197: Ligne 188:
  
 <note> <note>
-Le hash spécial ''%ENV'' fait référence aux variables d'environnement de votre système.+Le hash spécial "%ENVfait référence aux variables d'environnement de votre système.
 </note> </note>
  
 ==== Références ==== ==== Références ====
  
-Les références sont des "Scalar" constitués de Hashes, dont les clés sont elles même des Hashes, ce shéma pouvant se reproduire sur plusieurs niveaux. Chaque bloc de Hashe est encadré par ''{'' et ''}''. Les références permettent ainsi de créer des types de données plus élaborées. Pour faire référence à une valeur dans une référence, utilisez la syntaxe suivante : ''$nomdelareference->{'nom_cle_niveau_1'}->{'nom_cle_niveau_2'}->{'ect'}''+Les références sont des scalaires constitués de tables de hachage, dont les clés sont elles même des tables de hachage, ce shéma pouvant se reproduire sur plusieurs niveaux. Chaque table de hachage est encadré par ''{'' et ''}''. Les références permettent ainsi de créer des types de données plus élaborées. Pour faire référence à une valeur dans une référence, utilisez la syntaxe suivante : ''$nomdelareference->{'nom_cle_niveau_1'}->{'nom_cle_niveau_2'}->{'ect'}''
  
 **Exemple :** **Exemple :**
Ligne 236: Ligne 227:
 ==== if ==== ==== if ====
  
-Le if permet d'éxecuter un bloc d'instructions si une condition est respectée. Si l'on souhaite également associer un bloc d'instruction lorsque la condition n'est pas respectée, on peut utiliser else ou elseif si l'on souhaite poser une autre condition.+Le if permet d'exécuter un bloc d'instructions si une condition est respectée. Si l'on souhaite également associer un bloc d'instruction lorsque la condition n'est pas respectée, on peut utiliser else ou elseif si l'on souhaite poser une autre condition.
  
 Syntaxe : ''if (condition) { instruction1; instruction2; etc; } elseif (condition2) { instruction; } elseif (condition3) { instruction; } else { instruction; }'' Syntaxe : ''if (condition) { instruction1; instruction2; etc; } elseif (condition2) { instruction; } elseif (condition3) { instruction; } else { instruction; }''
Recent changes RSS feed Valid XHTML 1.0 Valid CSS Powered by DokuWiki GNU FDL

Qui sommes-nous ?
Aidez WikiSquare en le faisant connaître !
Sauf mention contraire, tous les textes sont disponibles sous les termes de la GNU Free Documentation License.
Les images sont sous le copyright de leurs auteurs.

Page générée en 0.029234886169434 seconde.