perl:introduction_generale_et_pratique
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
perl:introduction_generale_et_pratique [2009/03/15 00:36] – créée root | perl:introduction_generale_et_pratique [2013/03/12 23:39] (Version actuelle) – root | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | == 1. Contexte | + | ====== Introduction ====== |
- | === Historique === | + | ====== 1. Contexte ====== |
+ | |||
+ | ===== Historique | ||
Perl a été créé en 1987 par Larry Wall. Il en est toujours le concepteur et mainteneur principal, mais 20 ans après il est entouré par une large communauté de hackers qui maintiennent, | Perl a été créé en 1987 par Larry Wall. Il en est toujours le concepteur et mainteneur principal, mais 20 ans après il est entouré par une large communauté de hackers qui maintiennent, | ||
Ligne 9: | Ligne 11: | ||
Un travail de refonte et d' | Un travail de refonte et d' | ||
- | === Philosophie === | + | ===== Philosophie |
- | Perl a été conçu pour traiter des données de façon simple et efficace, et s'est trouvé également pertinent pour de nombreux travaux d' | + | Perl a été conçu pour traiter des données de façon simple et efficace, et s'est trouvé également pertinent pour de nombreux travaux d' |
Perl a été conçu avec quelques principes qui lui sont " | Perl a été conçu avec quelques principes qui lui sont " | ||
- | * Il y a plus d'une façon de le faire. | + | |
- | * Rendre les choses faciles faciles, et les choses difficiles possibles. | + | * Rendre les choses faciles faciles, et les choses difficiles possibles. |
Perl est - entre autres - un acronyme pour " | Perl est - entre autres - un acronyme pour " | ||
- | === Les cousins === | + | ===== Les cousins |
Perl est très souvent comparé à des langages haut niveau fournissant des services comparables (dans une mesure moindre pour le très spécialisé PHP): | Perl est très souvent comparé à des langages haut niveau fournissant des services comparables (dans une mesure moindre pour le très spécialisé PHP): | ||
- | {| bgcolor="# | + | ^ **Langage** ^ **Licence** ^ **Historique** ^ **Actualité** ^ **Environnement**^ |
- | |- bgcolor="# | + | | [[http:// |
- | | ''' | + | | [[http:// |
- | |- | + | | [[http:// |
- | | [http:// | + | | [[http:// |
- | |- | + | |
- | | [http:// | + | |
- | |- | + | |
- | | [http:// | + | |
- | |- | + | |
- | | [http:// | + | |
- | |} | + | |
- | == 2. Utilisation == | + | ====== 2. Utilisation |
- | === Installation === | + | ===== Installation |
Vous êtes sous Unix: c'est déjà fait ! Perl est en effet devenu un composant essentiel de la majorité des systèmes d' | Vous êtes sous Unix: c'est déjà fait ! Perl est en effet devenu un composant essentiel de la majorité des systèmes d' | ||
- | $ perl --version | + | |
This is perl, v5.8.8 built for i486-linux-gnu-thread-multi | This is perl, v5.8.8 built for i486-linux-gnu-thread-multi | ||
Ligne 48: | Ligne 43: | ||
Par exemple, vous pourrez constater que de nombreux programme importants de votre système GNU/Linux sont écrits en Perl : | Par exemple, vous pourrez constater que de nombreux programme importants de votre système GNU/Linux sont écrits en Perl : | ||
- | $ file / | + | |
- | 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:// | + | 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:// |
- | === Exécution === | + | ===== Exécution |
- | Si vous avez un fichier | + | Si vous avez un fichier |
- | $ perl programme.pl | + | |
- | Il est plus traditionnel de passer par le mécanisme standard d'Unix permettant d' | + | $ perl programme.pl |
- | * le programme doit être exécutable : | + | |
- | $ chmod +x programme.pl | + | Il est plus traditionnel de passer par le mécanisme standard d'Unix permettant d' |
- | * le programme doit commencer par le '' | + | |
- | # | + | |
- | print "Hello world!\n"; | + | |
+ | $ chmod +x programme.pl | ||
+ | * le programme doit commencer par le //shebang// et l' | ||
+ | |||
+ | # | ||
+ | | ||
On peut alors invoquer le programme ainsi : | On peut alors invoquer le programme ainsi : | ||
- | $ ./ | ||
- | === 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' | ||
- | * 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 ('''/''' | ||
- | === Documentation === | + | * Invoquez vos scripts Perl en appelant explicitant l' |
+ | * 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' | ||
+ | |||
+ | ===== Documentation | ||
- | La source principale pour un programmeur Perl est ''' | + | La source principale pour un programmeur Perl est **CPAN** (Comprehensive Perl Archive Network), qui rassemble la documentation, |
Dans l' | Dans l' | ||
- | * ''' | ||
- | * ''' | ||
- | * ''' | ||
- | == 3. Le langage == | + | * **man perlfunc** : les fonctions de base de l' |
+ | * **man perldata** : les données de Perl (listes, hashes, etc) et leur manipulation | ||
+ | * **man perlre** : syntaxe des expressions régulières Perl | ||
- | === Les variables === | + | ====== 3. Le langage ====== |
+ | |||
+ | ===== Les variables | ||
Perl utilise 3 types principaux de variables : | Perl utilise 3 types principaux de variables : | ||
- | * Les ''' | + | |
- | $pi = 3.1416; | + | |
- | | + | |
- | * Les ''' | + | |
- | @menu = ( " | + | |
- | | + | |
- | * Les ''' | + | |
- | %menu = ( " | + | |
- | print $menu{" | + | |
- | Les points importants (et parfois suprenants) à noter : | + | <code perl> |
- | * les noms de variables sont sensibles à la casse | + | |
- | * les variables | + | |
- | * 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' | + | * Les **listes**, qui décrivent une suite ordonnée |
+ | <code perl> | ||
+ | @menu = ( " | ||
+ | print $menu[0]; | ||
+ | </ | ||
- | === Boucles, tests === | + | * Les **hashes** (tableaux associatifs), |
+ | |||
+ | <code perl> | ||
+ | %menu = ( " | ||
+ | print $menu{" | ||
+ | </ | ||
+ | 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' | ||
+ | ===== Boucles, tests ===== | ||
On retrouve une syntaxe similaire au C pour la boucle classique : | On retrouve une syntaxe similaire au C pour la boucle classique : | ||
- | for ($i = 0; $i < 5; $i++) { ... } | + | <code perl> |
+ | for ($i = 0; $i < 5; $i++) { ... } | ||
+ | </ | ||
Mais on peut aussi facilement parcourir une liste : | Mais on peut aussi facilement parcourir une liste : | ||
- | foreach (@menu) { print "au menu: $_\n"; } | + | <code perl> |
+ | foreach (@menu) { print "au menu: $_\n"; } | ||
+ | </ | ||
Et on a le droit de choisir l' | Et on a le droit de choisir l' | ||
- | print "au menu: $_\n" foreach (@menu); | + | <code perl> |
+ | print "au menu: $_\n" foreach (@menu); | ||
+ | </ | ||
De même pour les tests : | De même pour les tests : | ||
- | if ($menu[0] eq " | + | <code perl> |
- | print " | + | if ($menu[0]] eq " |
- | + | print " | |
- | === 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 : | ||
- | sub somme_entiers { | + | <code perl> |
- | | + | sub somme_entiers { |
- | } | + | return $_[0] + $_[1]; |
- | print somme_entiers(4, | + | } |
+ | print somme_entiers(4, | ||
+ | </ | ||
- | Une fonction n'a pas nécessairement de prototype, et les arguments sont passés à la fonction via la liste ''' | + | 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' | 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' | ||
- | print "On a un probleme" | + | <code perl> |
+ | print "On a un probleme" | ||
+ | </ | ||
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 : | ||
- | print somme_entiers($1, | + | <code perl> |
- | + | print somme_entiers($1, | |
- | === Modules === | + | </ |
+ | ===== Modules | ||
Perl possède une collection conséquente et centralisée de modules. Ils sont tous documentés et testés. Il est rare de ne pas trouver ce dont on a besoin dans les archives de CPAN. | Perl possède une collection conséquente et centralisée de modules. Ils sont tous documentés et testés. Il est rare de ne pas trouver ce dont on a besoin dans les archives de CPAN. | ||
Ligne 146: | Ligne 168: | ||
Il existe deux types de modules (ceci étant transparent pour l' | Il existe deux types de modules (ceci étant transparent pour l' | ||
- | * les modules écrits entièrement en Perl | + | |
- | * les modules utilisant des bibliothèques " | + | * les modules utilisant des bibliothèques " |
On peut bien entendu écrire facilement ses propres modules, soit pour réaliser des bibliothèques, | On peut bien entendu écrire facilement ses propres modules, soit pour réaliser des bibliothèques, | ||
perl/introduction_generale_et_pratique.1237077371.txt.gz · Dernière modification : 2009/03/15 00:36 de root