Outils pour utilisateurs

Outils du site


perl:introduction_generale_et_pratique

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:introduction_generale_et_pratique [2009/03/15 00:36] – édition externe 127.0.0.1perl:introduction_generale_et_pratique [2013/03/12 23:39] (Version actuelle) root
Ligne 1: Ligne 1:
 +====== Introduction ======
 +
 ====== 1. Contexte ====== ====== 1. Contexte ======
  
Ligne 43: Ligne 45:
   $ file /usr/bin/*|grep perl   $ file /usr/bin/*|grep perl
  
-Vous êtes sous Windows: dommage, ce sera un peu plus compliqué et délicat. Il existe une distribution complète et de bonne qualité : [[http://www.activestate.com/Products/Download/Download.plex?id=ActivePerl| ActiveState Perl]. Il vous faudra également faire attention à quelques pièges, consultez les chapitres suivants !+Vous êtes sous Windows: dommage, ce sera un peu plus compliqué et délicat. Il existe une distribution complète et de bonne qualité : [[http://www.activestate.com/Products/Download/Download.plex?id=ActivePerl| ActiveState Perl]]. Il vous faudra également faire attention à quelques pièges, consultez les chapitres suivants !
  
  ===== Exécution =====  ===== Exécution =====
  
  Si vous avez un fichier //programme.pl// qui contient du code Perl (l'extension **.pl** est optionnelle), il peut simplement s'exécuter ainsi :  Si vous avez un fichier //programme.pl// qui contient du code Perl (l'extension **.pl** est optionnelle), il peut simplement s'exécuter ainsi :
 +
    $ perl programme.pl    $ perl programme.pl
  
  Il est plus traditionnel de passer par le mécanisme standard d'Unix permettant d'appeler l'interpréteur directement depuis le programme. Il faut alors respecter 2 conditions:  Il est plus traditionnel de passer par le mécanisme standard d'Unix permettant d'appeler l'interpréteur directement depuis le programme. Il faut alors respecter 2 conditions:
- * le programme doit être exécutable :+ 
 +  * le programme doit être exécutable : 
    $ chmod +x programme.pl    $ chmod +x programme.pl
- * le programme doit commencer par le //shebang// et l'interpréteur, éventuellement avec des options :+  * le programme doit commencer par le //shebang// et l'interpréteur, éventuellement avec des options : 
    #!/usr/bin/perl -w    #!/usr/bin/perl -w
    print "Hello world!\n";    print "Hello world!\n";
  
- On peut alors invoquer le programme ainsi :+On peut alors invoquer le programme ainsi : 
    $ ./programme.pl    $ ./programme.pl
  
- ===== Pièges =====+===== Pièges =====
  
- Avec Perl sous Windows, vous devrez faire attention à certains détails qui ne vont pas de soi : +Avec Perl sous Windows, vous devrez faire attention à certains détails qui ne vont pas de soi :
- * Invoquez vos scripts Perl en appelant explicitant l'interpréteur avec le script en paramètre, et non en reposant sur l'association entre l'extension **.pl** et l'interpréteur: sans cela, les entrées et sorties standard **ne fonctionneront pas**. +
- * Utilisez un éditeur de texte capable de respecter la convention de fin de ligne Unix (LF, et non la convention Windows qui est CR-LF) +
- * Utilisez le slash (**/**) au lieu de l'anti-slash dans vos chemins de fichier, vous éviterez les oublis d'échappement et quelques problèmes de portabilité+
  
- ===== Documentation =====+  * Invoquez vos scripts Perl en appelant explicitant l'interpréteur avec le script en paramètre, et non en reposant sur l'association entre l'extension **.pl** et l'interpréteur: sans cela, les entrées et sorties standard **ne fonctionneront pas**. 
 +  * Utilisez un éditeur de texte capable de respecter la convention de fin de ligne Unix (LF, et non la convention Windows qui est CR-LF) 
 +  * Utilisez le slash (**/**) au lieu de l'anti-slash dans vos chemins de fichier, vous éviterez les oublis d'échappement et quelques problèmes de portabilité
  
- La source principale pour un programmeur Perl est **CPAN** (Comprehensive Perl Archive Network), qui rassemble la documentation, les modules et les différentes informations afférentes à Perl. On l'utilise principalement pour la recherche sur la documentation des très nombreux modules (http://search.cpan.org/).+===== Documentation =====
  
- Dans l'utilisation la plus courante, on a recours aux traditionnelles pages de manuel. Elles sont très nombreuses, et regroupées par section. Les plus utilisées: +La source principale pour un programmeur Perl est **CPAN** (Comprehensive Perl Archive Network), qui rassemble la documentation, les modules et les différentes informations afférentes à Perl. On l'utilise principalement pour la recherche sur la documentation des très nombreux modules (http://search.cpan.org/).
- * **man perlfunc** : les fonctions de base de l'interpréteur +
- * **man perldata** les données de Perl (listes, hashes, etcet leur manipulation +
- * **man perlre** : syntaxe des expressions régulières Perl+
  
- ====== 3Le langage ======+Dans l'utilisation la plus courante, on a recours aux traditionnelles pages de manuelElles sont très nombreuses, et regroupées par section. Les plus utilisées:
  
- ===== Les variables =====+  * **man perlfunc** : les fonctions de base de l'interpréteur 
 +  * **man perldata** : les données de Perl (listes, hashes, etc) et leur manipulation 
 +  * **man perlre** : syntaxe des expressions régulières Perl
  
- Perl utilise 3 types principaux de variables : +====== 3. Le langage ====== 
- * Les **scalaires**, qui permettent de représenter des nombres ou des chaînes de caractère. Ces variables sont préfixés par le symbole **$** :+ 
 +===== Les variables ===== 
 + 
 +Perl utilise 3 types principaux de variables : 
 +  * Les **scalaires**, qui permettent de représenter des nombres ou des chaînes de caractère. Ces variables sont préfixés par le symbole **$** : 
 + 
 +<code perl>
    $pi = 3.1416;    $pi = 3.1416;
    $hello = "Hello world !\n";    $hello = "Hello world !\n";
- * Les **listes**, qui décrivent une suite ordonnée de scalaires. Le préfixe est le symbole **@** :+</code> 
 + 
 +  * Les **listes**, qui décrivent une suite ordonnée de scalaires. Le préfixe est le symbole **@** : 
 +<code perl>
    @menu = ( "salade", "nouilles", "yaourt" );    @menu = ( "salade", "nouilles", "yaourt" );
    print $menu[0];    print $menu[0];
- * Les **hashes** (tableaux associatifs), qui associent une clé (un scalaire) avec une valeur (un autre scalaire). Le préfixe est alors le **%** :+</code> 
 + 
 +  * Les **hashes** (tableaux associatifs), qui associent une clé (un scalaire) avec une valeur (un autre scalaire). Le préfixe est alors le **%** : 
 + 
 +<code perl>
    %menu = ( "entrée" => "salade", "plat" => "nouilles", "dessert" => "yaourt" );    %menu = ( "entrée" => "salade", "plat" => "nouilles", "dessert" => "yaourt" );
    print $menu{"dessert"};    print $menu{"dessert"};
 +</code>
  Les points importants (et parfois suprenants) à noter :  Les points importants (et parfois suprenants) à noter :
- * les noms de variables sont sensibles à la casse 
- * les variables $toto, @toto et %toto sont distinctes et peuvent coexister 
- * le préfixe dépend de la valeur accédée (élément du tableau @tab: $tab[0]) 
- * leur déclaration n'est pas strictement nécessaire 
  
- Nous verrons qu'il existe d'autres types spéciaux de variables, comme les descripteurs de fichier et les références.+  * les noms de variables sont sensibles à la casse 
 +  * les variables $toto, @toto et %toto sont distinctes et peuvent coexister 
 +  * le préfixe dépend de la valeur accédée (élément du tableau @tab: $tab[0]) 
 +  * leur déclaration n'est pas strictement nécessaire
  
- ===== Boucles, tests =====+Nous verrons qu'il existe d'autres types spéciaux de variables, comme les descripteurs de fichier et les références. 
 +===== Boucles, tests =====
  
- On retrouve une syntaxe similaire au C pour la boucle classique :+On retrouve une syntaxe similaire au C pour la boucle classique : 
 +<code perl>
    for ($i = 0; $i < 5; $i++) { ... }    for ($i = 0; $i < 5; $i++) { ... }
 +</code>
  
- Mais on peut aussi facilement parcourir une liste :+Mais on peut aussi facilement parcourir une liste : 
 +<code perl>
    foreach (@menu) { print "au menu: $_\n"; }    foreach (@menu) { print "au menu: $_\n"; }
 +</code>
  
- Et on a le droit de choisir l'ordre dans lequel on écrit les instructions !+Et on a le droit de choisir l'ordre dans lequel on écrit les instructions ! 
 +<code perl>
    print "au menu: $_\n" foreach (@menu);    print "au menu: $_\n" foreach (@menu);
 +</code>
  
- De même pour les tests : +De même pour les tests : 
-   if ($menu[0]] eq "salade") { print "Encore de la salade!"; }+<code perl> 
 +  if ($menu[0]] eq "salade") { print "Encore de la salade!"; }
   print "Encore de la salade!"; if $menu[0] eq "salade";   print "Encore de la salade!"; if $menu[0] eq "salade";
 +</code>
 ===== Les fonctions ===== ===== Les fonctions =====
  
 Il existe de nombreuses variantes pour déclarer une fonction, la plus courante en Perl étant la plus simple : Il existe de nombreuses variantes pour déclarer une fonction, la plus courante en Perl étant la plus simple :
 +<code perl>
   sub somme_entiers {   sub somme_entiers {
   return $_[0] + $_[1];   return $_[0] + $_[1];
   }   }
   print somme_entiers(4, 9);   print somme_entiers(4, 9);
 +</code>
  
 Une fonction n'a pas nécessairement de prototype, et les arguments sont passés à la fonction via la liste **@_**. Chaque argument est passé par référence et peut donc être modifié par la fonction. Le type de retour est libre, les fonctions en Perl sont polymorphes (on peut renvoyer un entier, une chaîne ou une liste dans une même fonction). Une fonction n'a pas nécessairement de prototype, et les arguments sont passés à la fonction via la liste **@_**. Chaque argument est passé par référence et peut donc être modifié par la fonction. Le type de retour est libre, les fonctions en Perl sont polymorphes (on peut renvoyer un entier, une chaîne ou une liste dans une même fonction).
- 
 ===== Les expressions régulières ===== ===== Les expressions régulières =====
  
 Elles sont partie intégrante de Perl et en fait la particularité la plus notable du langage. Une expression regulière est un mécanisme de recherche et d'extraction d'information dans les chaînes de caractère. Dans le cas le plus simple, on peut simplement vérifier si un mot est présent : Elles sont partie intégrante de Perl et en fait la particularité la plus notable du langage. Une expression regulière est un mécanisme de recherche et d'extraction d'information dans les chaînes de caractère. Dans le cas le plus simple, on peut simplement vérifier si un mot est présent :
 +<code perl>
   print "On a un probleme" if $message =~ /erreur/;   print "On a un probleme" if $message =~ /erreur/;
 +</code>
  
 On peut également reconnaître un format de chaîne et en extraire certains éléments : On peut également reconnaître un format de chaîne et en extraire certains éléments :
 +<code perl>
   print somme_entiers($1, $2) if ($message =~ /^somme de (\d+) et (\d+)/) >= 2;   print somme_entiers($1, $2) if ($message =~ /^somme de (\d+) et (\d+)/) >= 2;
 +</code>
 ===== Modules ===== ===== Modules =====
  
perl/introduction_generale_et_pratique.1237077412.txt.gz · Dernière modification : 2009/03/15 00:38 (modification externe)